来自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"]
结果似乎相同,那有什么区别?
答案 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.