关闭不在对象内部调用

时间:2017-04-09 18:41:14

标签: swift

我正在尝试使用闭包来运行这个简单的例子用于学习目的,但似乎没有像我预期的那样工作:

class Test {
    var callback: ((_ value: Int) -> Void)?

    func perform() {
        callback
    }
}

let t = Test()
t.callback = { _ in
    print("Test")
}

t.perform()

我原本应该会"Test"打印,但显然不是。有人可以指出问题是什么吗?

1 个答案:

答案 0 :(得分:1)

编译代码会显示错误:

error: expression resolves to an unused l-value
        callback
        ^~~~~~~~

callback只是(可选)闭包,而不是对闭包的调用。 显然,游乐场不会抱怨未使用的表达。

使用一些参数调用闭包修复了问题:

func perform() {
    callback?(5)
}