我对下面的Array方法感到困惑。任何人都可以帮助我理解他们在简单片段的帮助下彼此之间的不同之处吗?
array.sort
和array.sort { | a,b | block }
array.to_a
和array.to_ary
array.size
和array.length
array.reverse
和array.reverse_each {|item| block }
array.fill(start [, length] ) { |index| block }
和array.fill(range) { |index| block }
答案 0 :(得分:2)
<强>排序强>
a=[3,1,2]
a.sort # => [1, 2, 3]
a.sort{|a,b| b<=>a} # => [3, 2, 1]
如果您需要一些自定义方式对元素进行排序,请使用第二个。
to_a vs. to_ary:
class Foo < Array;end
b=Foo[1,2]
b.to_ary.class # returns self
b.to_a.class # converts to array
尺寸和长度完全相同。
reverse_each与reverse.each几乎相同。
如果您只想填充数组的一部分,可以使用range
或start,length
调用Array.fill。这些只是达到同样目的的不同方式:
(["a"]*10).fill("b",2..7)
(["a"]*10).fill("b",2,6)
都返回["a", "a", "b", "b", "b", "b", "b", "b", "a", "a"]
。