Fab*_*bio 2 ruby sorting ruby-on-rails
来自Ruby的官方文档:
sort →new_ary sort {| a,b | block}→new_ary返回通过排序self创建的新数组.
排序的比较将使用<=>运算符或使用可选代码块完成.
该块必须实现a和b之间的比较,并且当a跟随b时返回-1,当a和b相等时返回-1,如果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"]
Run Code Online (Sandbox Code Playgroud)
分类!→ary单击以切换源排序!{| a,b | block}→ary将自我排序到位.
排序的比较将使用<=>运算符或使用可选代码块完成.
该块必须实现a和b之间的比较,并且当a跟随b时返回-1,当a和b相等时返回-1,如果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"]
Run Code Online (Sandbox Code Playgroud)
结果看起来是一样的,那有什么区别?
Ami*_*ait 10
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]
Run Code Online (Sandbox Code Playgroud)
在哪里
a = [4,3,2,5,1]
a.sort! # => [1,2,3,4,5]
a is now [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)