swift - 如何在 Swift 中为成员函数设置结构成员

标签 swift struct func

在此结构中

struct {
    let type : SaveType
    var saveFunc : (value:AnyObject) 

    init(model:Model) {
        type = model.type
        // how to set saveFunc based on value of type
    }

    func save1(value:AnyObject) {...}
    func save2(value:AnyObject) {...}
}

type 的值一旦设置就不会改变。 如何根据 type 的值设置成员变量 saveFunc

我希望调用者调用 saveFunc(value),而不是检查 type 变量并调用相应版本的 save。

我不希望每次调用 saveFunc 时都调用该开关 - 所有需要的信息在 init() 时都可用 - 所以我想在 init 时设置此行为。

很高兴收到不同的方法作为答案。

最佳答案

有多种方法可以做到这一点,例如:

struct {
    let type : SaveType

    init(model:Model) {
        type = model.type
    }

    private func save1(value:AnyObject) {...}
    private func save2(value:AnyObject) {...}

    // let's just decide internally what to call
    func save(value:AnyObject) {
       switch (type) {
          case .Type1:
             save1(value)
          case .Type2:
             save2(value)
       }
    }
}

但是,您可以在 init 中做出相同的决定,并将 save1save2 分配给 saveFunc。还有其他解决方案,但我认为它们都更复杂。

关于swift - 如何在 Swift 中为成员函数设置结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039698/

相关文章:

c++ - 英特尔 OpenCL 编译器 : optimize struct usage

c - C 中的结构体和函数

c - 来自 n 个初始化实例的数组

Swift 函数不会让我返回 Bool,即使函数有返回值

swift - 如何在 Swift 中使用模式匹配重载函数?

iOS - 如何将渐变颜色应用于 UICollectionViewCell backgroundView?

Swift 在点击单元格时显示不同的图像

swift - 无法在自定义 UITableViewcell Xamarin.IOS 上执行行选择导航

c# - 如何通过将 Func 和 Action 作为参数的函数的两个重载来简化代码?

objective-c - 如何在 Swift 中打印此方法的最终结果?