繁体   English   中英

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

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

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

如果您这样做:

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

swift中的ArrayStruct ,而Struct是值类型,因此您的someArray()函数基本上会返回该数组的副本。
函数内部数组的创建并不能确定其可变性。


因此,回答您的问题:

没有! 您不需要这样做。
通常只需迅速创建数组即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM