如果我想修改展开的值,我必须先将它分配给变量..
if let regions:[String] = regionList {
regions.removeLast() //Error!
}
有更好的方法可以解决此问题吗?
我希望Apple能提供另一种可选的绑定语法,如:
if var regions:[String] = regionList {
...
}
答案 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
}