-3

我对下面的 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 }
4

1 回答 1

2

请阅读Array 的文档

种类:

a=[3,1,2]
a.sort              # => [1, 2, 3] 
a.sort{|a,b| b<=>a} # => [3, 2, 1] 

如果您需要某种自定义方式对元素进行排序,请使用第二种方法。

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

如果只想填充数组的一部分,可以使用 arange或调用 Array.fill start,length。这些只是实现相同目标的不同方法:

(["a"]*10).fill("b",2..7)
(["a"]*10).fill("b",2,6)

两者都返回["a", "a", "b", "b", "b", "b", "b", "b", "a", "a"]

于 2013-01-12T09:36:17.940 回答