下面的Array方法在Ruby中如何相互不同?

时间:2013-01-12 09:19:53

标签: ruby arrays

我对下面的Array方法感到困惑。任何人都可以帮助我理解他们在简单片段的帮助下彼此之间的不同之处吗?

  • array.sortarray.sort { | a,b | block }
  • array.to_aarray.to_ary
  • array.sizearray.length
  • array.reversearray.reverse_each {|item| block }
  • array.fill(start [, length] ) { |index| block }
    array.fill(range) { |index| block }

1 个答案:

答案 0 :(得分:2)

请阅读documentation for Array

<强>排序

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几乎相同。

如果您只想填充数组的一部分,可以使用rangestart,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"]