我知道 Ruby 有很多方法,尤其是在数组或类似数组的对象上,例如 sortflatten 。然而,这些方法也有双胞胎(带感叹号的),如 sort!flatten!

现在我的问题是:

  • flattenflatten!(破坏性扁平化)有什么区别?
  • 一个更笼统的问题,为什么叫它破坏性?
  • 最佳答案

    区别仅在于 flatten 返回数组的副本(扁平化的新数组),而 flatten! 进行“就地”或“破坏性”修改。术语破坏性意味着它修改了原始数组。当您知道最终结果是什么并且不介意原始结构是否更改时,这很有用。

    正如@padde 指出的那样,它会消耗更少的内存来执行破坏性的操作,因为结构可能很大并且复制会很昂贵。

    但是,如果您想保留原始结构,最好使用该方法并进行复制。

    这是使用 sortsort! 的示例。

    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/

    10-11 19:15