>  Q&A  >  본문

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]

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

天蓬老师天蓬老师2712일 전694

모든 응답(3)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-21 11:20:00

    으아악

    이 방법으로 생성된 10개의 빈 배열은 동일한 객체입니다

    다른 Object를 생성하고 싶다면 다음 방법을 이용해주세요.

    으아악

    참조: http://ruby-doc.org/core-2.0.0/Array.html#label-Creating+Arrays

    회신하다
    0
  • 迷茫

    迷茫2017-04-21 11:20:00

    위에 덧붙이자면, object_id는 모두 동일합니다
    foo.map(&:object_id)
    =>

    회신하다
    0
  • 怪我咯

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

    저는 주로 지도를 사용합니다.
    (1..10).map {[]}

    하지만 여전히 질문이 있습니다. 왜 여전히 동일한 어레이인가요?

    회신하다
    0
  • 취소회신하다