假设一个函数/方法有一个本地可变数组,并且函数/方法的返回类型是一个不可变数组。创建要返回的新不可变数组是一种常见做法:
- (NSArray *)someArray {
NSMutableArray *array = [NSMutableArray array]
// ...do something with array
return array.copy
}
但是,在Swift中,由于数组是值类型,我还需要这样做吗?
func someArray() -> [MyValue] {
var array = [MyValue]()
// do something with array
return array // or return Array(array)?
}
答案 0 :(得分:0)
对于你的例子:
func someArray() -> [MyValue] {
var array = [MyValue]()
//...do something with array
return array
}
这取决于您如何使用该功能。
如果你这样做:
let arrTest = someArray()
let
会使arrTest
不可变var arrTest = someArray()
var
将arrTest
变为Array
是Struct
s,Struct
是值类型,因此您的函数someArray()
基本上会返回数组的副本。不!您不需要这样做 只需在swift中正常创建数组。