Array中的sorted和sort之间有什么区别

Dav*_*eek 15 swift

Swift 3中,有什么区别:

self.myArray.sort(by: { $0.name > $1.name })
Run Code Online (Sandbox Code Playgroud)

let newSortedArray = self.myArray.sorted(by: { $0.name > $1.name })
Run Code Online (Sandbox Code Playgroud)

效果似乎是相同的,但我需要将第二个的结果传递给另一个数组(或自身?),以便能够使用它.

有什么不同?非常感谢帮助.

在这个例子中myArray是一个数组struct Whatever {var name: String ""}

Ada*_*o13 23

sort改变它被调用的数组,以便对其项进行排序.sorted返回调用它的数组的副本,并使用值排序.

如果数组的原始顺序很重要,则调用sort它会导致严重问题.

此外,如果您有一个包含值类型并sorted在其上调用的巨型数组,它将复制每个值并使内存使用量加倍.

  • 不完全是.如果数组的原始顺序很重要,在它上面调用`sort`会导致严重的问题.此外,如果你有一个包含值类型并在其上调用`sorted`的巨型数组,它将复制每个值并使内存使用量加倍. (2认同)

Jos*_*ann 11

请注意,swift 3中的约定是,如果你有一个现在时的动词,如sort或reverse,它是一个变异函数(原始集合被修改),而如果你有一个过去分词或动名词,如枚举,追加或排序然后你得到一份副本.如果这是不明确的,因为操作已经是名词,就像union一样,变异版本用form:formUnion命名.