我正在尝试使用闭包来运行这个简单的例子用于学习目的,但似乎没有像我预期的那样工作:
class Test {
var callback: ((_ value: Int) -> Void)?
func perform() {
callback
}
}
let t = Test()
t.callback = { _ in
print("Test")
}
t.perform()
我原本应该会"Test"
打印,但显然不是。有人可以指出问题是什么吗?
答案 0 :(得分:1)
编译代码会显示错误:
error: expression resolves to an unused l-value callback ^~~~~~~~
callback
只是(可选)闭包,而不是对闭包的调用。
显然,游乐场不会抱怨未使用的表达。
使用一些参数调用闭包修复了问题:
func perform() {
callback?(5)
}