在此结构中
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
中做出相同的决定,并将 save1
或 save2
分配给 saveFunc
。还有其他解决方案,但我认为它们都更复杂。
关于swift - 如何在 Swift 中为成员函数设置结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039698/