Swift可选绑定仅允许常量

时间:2015-10-21 14:35:31

标签: swift swift2

Swift带有一个"可选绑定"允许自动展开可选值的机制。当我第一次学习它时看起来没问题,但后来我发现可选的绑定机制只能将未包装的值绑定到常量。

如果我想修改展开的值,我必须先将它分配给变量..

if let regions:[String] = regionList {
    regions.removeLast() //Error!
}

有更好的方法可以解决此问题吗?

我希望Apple能提供另一种可选的绑定语法,如:

if var regions:[String] = regionList {
    ...
}

2 个答案:

答案 0 :(得分:3)

if var技术存在,但该值只能在if var范围内变化,无论如何它都是副本,因为数组是值类型。

var regionList:[String]? = ["a", "b"]

if var regions = regionList {
    regions.removeLast()
    regions  // ["a"]
}

regionList  // ["a", "b"]

要改变您的Optional数组,您可以使用可选链接:

var regionList:[String]? = ["a", "b"]

regionList?.removeLast()

regionList  // ["a"]

这里的想法是.removeLast()只会在regionList?不是nil的情况下执行。

答案 1 :(得分:0)

你可以检查数组是否为nil:

var regionList:[String]? = ["a", "b"]

if regionList != nil {
    regionList!.removeLast() // you can safely force unwrap it here
}