[英]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.