“转义自动闭包捕获'inout'参数'self'”Swift编译错误

问题描述 投票:0回答:0
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
在哪里?为什么它会逃跑?
PS
我知道我可以传递一个“正常”闭包:
runner { myStruct.increase() }
并且它会起作用,但对我来说重要的是只能将函数名称传递给
runner

PS
其实SOF上已经有很多类似的问题了。我已经阅读了所有内容,据我所知,这是不可能做到的。哪个答案不适合我😃

swift escaping inout auto-close mutating-function
© www.soinside.com 2019 - 2024. All rights reserved.