Ruby array creation, Array.new vs []

前端 未结 5 2123
时光取名叫无心
时光取名叫无心 2020-12-03 02:49

What\'s the difference between these two statements? I use them in my rails app and to me it looks like they do the same thing

array_a = Array.new
array_b =          


        
5条回答
  •  一个人的身影
    2020-12-03 03:14

    Those two statements are functionally identical. Array.new however can take arguments and a block:

    Array.new # => []
    Array.new(2) # => [nil,nil]
    Array.new(5,"A") # =>["A","A","A","A","A"]
    
    a = Array.new(2,Hash.new)
    a[0]['cat'] = 'feline'
    a # => [{"cat"=>"feline"},{"cat"=>"feline"}]
    a[1]['cat'] = 'Felix'
    a # => [{"cat"=>"Felix"},{"cat"=>"Felix"}]
    
    a = Array.new(2){Hash.new} # Multiple instances
    a[0]['cat'] = 'feline'
    a # =>[{"cat"=>"feline"},{}]
    squares = Array.new(5){|i|i*i}
    squares # => [0,1,4,9,16]
    
    copy = Array.new(squares) # initialized by copying
    squares[5] = 25
    squares # => [0,1,4,9,16,25]
    copy # => [0,1,4,9,16]
    

    Note: the above examples taken from Programming Ruby 1.9

提交回复
热议问题