我经常在Objective-C中使用局部作用域来使命名更清晰。
{ UILabel *label = [[UILabel alloc] init]; [self addSubview:label]; self.titleLabel = label; }
我试图像这样在Swift中重写此代码:
{ let label = UILabel() self.addSubview(label) self.titleLabel = label }
这使我得到以下错误:
Error: Braced block of statements is an unused closure.
那么如何在Swift中创建本地作用域呢?
更新: 在Swift 2.0中,您只需使用do关键字:
do
do { let label = UILabel() self.addSubview(label) self.titleLabel = label }
这对于Swift 2.0之前的版本是正确的:
您可以定义与此类似的内容:
func locally(@noescape work: () -> ()) { work() }
然后使用locally如下代码:
locally
locally { let g = 42 println(g) }
(受locallyScala的 Predef 对象启发。)