我知道 Ruby 有很多方法,尤其是在数组或类似数组的对象上,例如 sort
或 flatten
。然而,这些方法也有双胞胎(带感叹号的),如 sort!
和 flatten!
。
现在我的问题是:
flatten
和 flatten!
(破坏性扁平化)有什么区别? 最佳答案
区别仅在于 flatten
返回数组的副本(扁平化的新数组),而 flatten!
进行“就地”或“破坏性”修改。术语破坏性意味着它修改了原始数组。当您知道最终结果是什么并且不介意原始结构是否更改时,这很有用。
正如@padde 指出的那样,它会消耗更少的内存来执行破坏性的操作,因为结构可能很大并且复制会很昂贵。
但是,如果您想保留原始结构,最好使用该方法并进行复制。
这是使用 sort
和 sort!
的示例。
a = [9, 1, 6, 5, 3]
b = a.sort
c = [7, 6, 3]
c.sort!
内容:
a = [9, 1, 6, 5, 3]
b = [1, 3, 5, 6, 9]
c = [3, 6, 7]
关于ruby - 什么是破坏性的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16682861/