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
}

这将取决于您如何使用该功能。

如果你这样做:

  1. let arrTest = someArray()
    • let 将使 arrTest 不可变
  2. var arrTest = someArray()
    • var 将使 arrTest 可变
swift 中的

ArrayStruct,而 Struct 是值类型,因此您的函数 someArray() 基本上是返回数组。
函数内部数组的创建并不能决定它的可变性。


所以回答你的问题:

不!你不需要做同样的事情。
只需在 swift.

中正常创建数组即可