struct MyStruct {
var a = 0
func foo() {
print("Ok")
}
mutating func increase() {
a += 1
}
}
func runner(_ function: () -> Void) {
function()
}
var myStruct = MyStruct()
runner(myStruct.foo) // Ok
runner(myStruct.increase) // 🚨 Escaping autoclosure captures 'inout' parameter 'self'
这里
autoclosure
在哪里?为什么它会逃跑?
func runner(_ function: @autoclosure () -> Void) {
function()
}
var myStruct = MyStruct()
runner(myStruct.foo()) // Ok
runner(myStruct.increase()) // ✅ Ok
不理想,但比“不可能”好 🙂