“排序”和“排序”之间有什么区别!红宝石的方法?

时间:2013-10-31 09:26:37

标签: ruby-on-rails ruby sorting

来自Ruby的官方文档:

  

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

     

使用< =>进行排序比较。操作员或使用   一个可选的代码块。

     

该块必须实现a和b之间的比较,并返回-1,   当a跟随b时,0表示a和b相等,如果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排序   自我到位。

     

使用&lt; =&gt;进行排序比较。操作员或使用   一个可选的代码块。

     

该块必须实现a和b之间的比较,并返回-1,   当a跟随b时,0表示a和b相等,如果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"]

结果似乎相同,那有什么区别?

3 个答案:

答案 0 :(得分:10)

sort不会修改原始数组,而sort!将会修改 ('!'是ruby中的爆炸方法,它将取代现有值)
例如:

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]

答案 1 :(得分:0)

在铁轨中!用于应用更改并更新其调用对象意味着

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

答案 2 :(得分:0)

'!' 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.