我说的不是指向 C 函数的指针,而是指向 Swift 类型中的方法的指针。
struct Test: GeneratorType {
var methodPointer: mutating () -> Bool? // Non-working guess
var which: Bool
init() {
which = false
methodPointer = which ? &testMethod1 : &testMethod2 // Also non-working guess
}
//...
}
编译器说“mutating
" 作为函数声明的一部分是不合法的。(实际上,它只是建议在那里使用分号。)对于指针初始化(在我删除mutating
),编译器认为我正在尝试调用函数并使用它们的结果。我想在这里使用这些方法本身作为对象,而不是作为函数调用。后来我想使用里面的指向方法next
;如果不弄清楚这一点,我将不得不求助于枚举标志并手动选择要调用的方法next
.
我希望关闭机制的某些部分允许这样做。也许像此页面描述了返回函数的函数。但我见过的例子都没有提到mutating
方法。
看看这是否对您有帮助。
class Something {
var f: ( () -> Int )?
let f1 = { () -> Int in /* do some action here */ return 1}
let f2 = { () -> Int in /* do some action here */ return 2}
func ff(which: Bool) {
f = which ? f1 : f2
}
func act() {
if let f = f {
f()
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)