【发布时间】:2015-01-27 18:05:11
【问题描述】:
像大多数语言一样,Swift 在条件、循环等中支持有限范围的变量,但是它本身似乎不支持普通块,这很遗憾,因为我发现它是一种非常有用的方法来限制变量的作用域,尤其是函数的完整长度可能需要的代价高昂的变量。
例如,我可能会做类似的事情(以 Swift 为例,因为目前无法编译):
var results = []
while let newResult = someFunction() { results.append(newResult) }
{
var newItems = []
while let newItem = foobar() { newItems.append(newItem) }
// Process newItems into results so we can add them
results += newItems
}
// Do some more stuff down here
对于常见的占位符名称也非常方便,但在执行的不同部分可能有不同的类型。虽然我可以声明不同的名称,但实际上它最终可能比仅重用具有明确标记范围的良好变量名称更加混乱或混乱。
当然,我可以做if true {} 之类的事情来作弊,但这似乎没有必要。那么有没有一种方法可以让我只声明一个范围/块而不必放入条件?
我知道这可能与闭包的形成方式有关,但有没有办法做这样的事情纯粹是为了限制 Swift 中的变量范围?
【问题讨论】:
-
可变范围 != "cost"
-
@user2864740 你能澄清你的意思吗?您是否暗示使用闭包等不适合作为这样做的手段?他们不会编译吗?
标签: swift