2017-04-09 28 views
0

我试图运行使用用于学习目的的关闭这个简单的例子,但似乎并没有工作,我预计:关闭不叫里面的对象

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

    func perform() { 
     callback 
    } 
} 

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

t.perform() 

我预计,​​将获得印刷,但显然不是。有人可以指出问题是什么吗?

+0

你的代码不能编译。 –

+0

我把它写在游乐场里,没有错误显示给我。让我在Xcode项目中尝试它。 – Kobe

+0

在'perform'方法中,可能需要将参数传递给'callback',例如, '回调?(5)'。 –

回答

1

编译代码揭示了错误:

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

callback只是(可选)关闭,而不是封闭的调用。 显然游乐场不抱怨未使用的表情。

调用一些参数封闭解决了这个问题:

func perform() { 
    callback?(5) 
}