Rumah > Soal Jawab > teks badan
我想在某一个数组中插入元素,代码如下:
foo = Array.new(10,[])
foo[0] << 1
puts foo.to_s
输出的结果是
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
这是为什么啊?
如果是哈希的话
bar = Hash.new([])
bar[0] << 1
puts bar.to_s
puts bar[1].to_s
输出的结果是
{}
[1]
更加摸不着头脑了……求指教……
ringa_lee2017-04-21 11:20:00
foo = Array.new(10,[])
10 tatasusunan kosong yang dibuat oleh kaedah ini adalah Objek yang sama
Jika anda ingin mencipta Objek yang berbeza, sila gunakan kaedah berikut.
foo = Array.new(10) { Array.new }
Rujukan: http://ruby-doc.org/core-2.0.0/Array.html#label-Creating+Arrays
迷茫2017-04-21 11:20:00
Untuk menambah perkara di atas, semua object_id adalah sama
foo.map(&:object_id)
=> [9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880]<
怪我咯2017-04-21 11:20:00
Saya biasanya menggunakan peta.
(1..10).peta {[]}
Tetapi saya masih mempunyai soalan, mengapa ia masih Array yang sama?