これら2つのステートメントの違いは何ですか?私は私のレールのアプリでそれらを使用すると、彼らは同じことRuby配列の作成、Array.new対[]
array_a = Array.new
array_b = []
これら2つのステートメントの違いは何ですか?私は私のレールのアプリでそれらを使用すると、彼らは同じことRuby配列の作成、Array.new対[]
array_a = Array.new
array_b = []
これらの二つの文は機能的に同じです何の違いは基本的にありませんに見えます。 Array.new
しかし引数とブロックを取ることができます:
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]
を行うように私には
[]
から取られた上記の例を順番にちょうど同じで新しい配列を作成し、Arrayクラスのシングルトンメソッド[]
へのショートカットです方法はArray.new
だから、あまりにも心配することなく、「彼らは同じだ」と言えるかもしれません。 Ruby's C codeから
>> [].object_id
=> 2148067340
>> [].object_id
=> 2149414040
:IRBで[]
への各呼び出しは、新しいアレイを作成すること
注
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
クリア/新しいオブジェクトを作成せずにアレイをリセットし、 'array.clear'を使用しますあなたの答えが私より優れているので、 '#=> []' –