【问题标题】:What is the difference between the "sort" and "sort!" method in ruby? [duplicate]“排序”和“排序”有什么区别!红宝石中的方法? [复制]
【发布时间】:2013-11-11 05:30:57
【问题描述】:

来自 Ruby 的官方文档:

排序 → new_ary sort { |a, b| block } → new_ary 返回一个新数组 通过自我排序创建。

排序的比较将使用 运算符或使用 一个可选的代码块。

该块必须实现a和b之间的比较,并返回-1, 当 a 跟在 b 之后,当 a 和 b 相等时为 0,如果 b 跟在 a 之后,则 +1。

另请参见 Enumerable#sort_by。

a = [ "d", "a", "e", "c", "b" ]
a.sort                    #=> ["a", "b", "c", "d", "e"]
a.sort { |x,y| y <=> x }  #=> ["e", "d", "c", "b", "a"]

排序! → ary 点击切换源排序! { |a, b|块 } → ary 排序 自我到位。

排序的比较将使用 运算符或使用 一个可选的代码块。

该块必须实现a和b之间的比较,并返回-1, 当 a 跟在 b 之后,当 a 和 b 相等时为 0,如果 b 跟在 a 之后,则 +1。

另请参见 Enumerable#sort_by。

a = [ "d", "a", "e", "c", "b" ]
a.sort!                    #=> ["a", "b", "c", "d", "e"]
a.sort! { |x,y| y <=> x }  #=> ["e", "d", "c", "b", "a"]

结果好像一样,那有什么区别呢?

【问题讨论】:

  • sort 返回一个通过排序self创建的新数组sort! 对self进行排序,它写在你发布的文档中...
  • 是的,尼尔,这可能是该问题的重复。我没有意识到这一点,因为我是 Ruby 的新手。对不起。假设我这次是无辜的:)
  • 这是来自接近投票的自动消息。完全没有问题,大多数封闭式问题都是真诚地提出的。但是 SO 的正确结果是这个问题应该被关闭,除非它可能由于问题和答案的措辞引起了每个人的想象,然后获得了足够的选票,它成为问题的 最佳版本。
  • 是的,我同意。感谢您对 SO 的贡献。

标签: ruby-on-rails ruby sorting


【解决方案1】:

sort 不会修改原始数组,而sort!
('!' 是 ruby​​ 中的 bang 方法,它将替换现有值)
例如:

a = [4,3,2,5,1] 
a.sort # => [1,2,3,4,5] 
a is still [4,3,2,5,1]

在哪里

a = [4,3,2,5,1]
a.sort! # => [1,2,3,4,5]
a is now [1,2,3,4,5]

【讨论】:

    【解决方案2】:

    在轨道上!用于应用更改并更新其调用对象的方法

    a.sort 只会返回排序后的数组,但会返回 a.sort!将返回排序后的数组并将新的排序结果保存在变量中。

    【讨论】:

      【解决方案3】:
      '!' is the bang method in ruby, it will replace the existing value 
      
      
      ex: .sort is a normal sorting method in ruby
          .sort! its a bang method in ruby its override the existing value.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多