一尘不染

如何在Swift中创建本地作用域?

swift

我经常在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中创建本地作用域呢?


阅读 242

收藏
2020-07-07

共1个答案

一尘不染

更新: 在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)
}

(受locallyScala的 Predef 对象启发。)

2020-07-07