Swift:我需要为函数返回创建一个新的不可变数组吗?

时间:2018-03-23 05:25:22

标签: objective-c arrays swift immutability

假设一个函数/方法有一个本地可变数组,并且函数/方法的返回类型是一个不可变数组。创建要返回的新不可变数组是一种常见做法:

- (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)?
}

1 个答案:

答案 0 :(得分:0)

对于你的例子:

func someArray() -> [MyValue] {
    var array = [MyValue]()

    //...do something with array
    return array
}

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

如果你这样做:

  1. let arrTest = someArray()
    • let会使arrTest不可变
  2. var arrTest = someArray()
    • vararrTest变为
  3. swift中的{p> ArrayStruct s,Struct是值类型,因此您的函数someArray()基本上会返回数组的副本。
    在函数内部创建数组并不能确定它的可变性。

    所以回答你的问题:

    不!您不需要这样做 只需在swift中正常创建数组。