我经常在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 { let label = UILabel() self.addSubview(label) self.titleLabel = label }
对于Swift 2.0之前的情况也是如此:
您可以定义类似于此的内容:
func locally(@noescape work: () -> ()) { work() }
然后使用locally
如下块:
locally { let g = 42 println(g) }
(灵感来自locally
Scala的Predef对象.)