Swift:我需要为函数 return 创建一个新的不可变数组吗?
Swift: do I need to create a new immutable array for function return?
假设 function/method 有一个局部可变数组,而 function/method 的 return 类型是一个不可变数组。创建一个新的不可变数组是 returned:
的常见做法
- (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()
基本上是返回数组。
函数内部数组的创建并不能决定它的可变性。
所以回答你的问题:
不!你不需要做同样的事情。
只需在 swift.
中正常创建数组即可
假设 function/method 有一个局部可变数组,而 function/method 的 return 类型是一个不可变数组。创建一个新的不可变数组是 returned:
的常见做法- (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
可变
Array
是 Struct
,而 Struct
是值类型,因此您的函数 someArray()
基本上是返回数组。
函数内部数组的创建并不能决定它的可变性。
所以回答你的问题:
不!你不需要做同样的事情。
只需在 swift.