cari

Rumah  >  Soal Jawab  >  teks badan

Ruby中二维数组插入元素的问题

我想在某一个数组中插入元素,代码如下:

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]

更加摸不着头脑了……求指教……

天蓬老师天蓬老师2763 hari yang lalu753

membalas semua(3)saya akan balas

  • ringa_lee

    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

    balas
    0
  • 迷茫

    迷茫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]<

    balas
    0
  • 怪我咯

    怪我咯2017-04-21 11:20:00

    Saya biasanya menggunakan peta.
    (1..10).peta {[]}

    Tetapi saya masih mempunyai soalan, mengapa ia masih Array yang sama?

    balas
    0
  • Batalbalas