इन दो बयानों के बीच क्या अंतर है? मैं उन्हें अपने रेल app में इस्तेमाल करते हैं और मेरे लिए यह है कि वे एक ही बातरूबी सरणी निर्माण, Array.new बनाम []
array_a = Array.new
array_b = []
इन दो बयानों के बीच क्या अंतर है? मैं उन्हें अपने रेल app में इस्तेमाल करते हैं और मेरे लिए यह है कि वे एक ही बातरूबी सरणी निर्माण, Array.new बनाम []
array_a = Array.new
array_b = []
उन दो बयानों कार्यात्मक रूप से समान हैं लग रहा है।
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.new
लेकिन तर्क और एक ब्लॉक ले जा सकते हैं उपरोक्त उदाहरण Programming Ruby 1.9
कर रहे मौलिक कोई फर्क नहीं
[]
से लिया सरणी वर्ग के सिंगलटन विधि []
के लिए एक शॉर्टकट है जो बदले में सिर्फ एक ही में एक नई सरणी बनाता है Array.new
के रूप में, तो आप शायद बहुत अधिक चिंता किए बिना 'वे वही हैं' कह सकते हैं।
ध्यान दें कि आईआरबी में []
की प्रत्येक कॉल एक नई सरणी बनाता है:
>> [].object_id
=> 2148067340
>> [].object_id
=> 2149414040
Ruby's C code से:
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
एक नई वस्तु बनाने के बिना/रीसेट सरणी साफ़ करने के लिए, का उपयोग 'array.clear' '# => []' –