[英]Do I need to override the getter for a property to return an immutable copy?
[英]Swift: do I need to create a new immutable array for function return?
假设函数/方法具有本地可变数组,并且函数/方法的返回类型是不可变数组。 创建要返回的新的不可变数组是一种常见的做法:
- (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)?
}
例如:
func someArray() -> [MyValue] {
var array = [MyValue]()
//...do something with array
return array
}
这将取决于您如何使用该功能。
如果您这样做:
let arrTest = someArray()
let
arrTest
不可变 var arrTest = someArray()
var
将使arrTest
可变 swift中的Array
是Struct
,而Struct
是值类型,因此您的someArray()
函数基本上会返回该数组的副本。
函数内部数组的创建并不能确定其可变性。
没有! 您不需要这样做。
通常只需迅速创建数组即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.