我想在某一个数组中插入元素,代码如下:
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]
更加摸不着头脑了……求指教……
欢迎选择我的课程,让我们一起见证您的进步~~
リーリー
このメソッドで作成された10個の空の配列は同じオブジェクトです
別のオブジェクトを作成したい場合は、次の方法を使用してください。
参考: http://ruby-doc.org/core-2.0.0/Array.html#label-Creating+Arrays
上記に追加すると、すべての object_id は同じです foo.map(&:object_id) => [9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880]
私は普段地図を使います (1..10).map {[]}
しかし、まだ質問があります。なぜ同じ配列のままなのでしょうか?
リーリー
このメソッドで作成された10個の空の配列は同じオブジェクトです
別のオブジェクトを作成したい場合は、次の方法を使用してください。
リーリー参考: http://ruby-doc.org/core-2.0.0/Array.html#label-Creating+Arrays
上記に追加すると、すべての object_id は同じです
foo.map(&:object_id)
=> [9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880]
私は普段地図を使います
(1..10).map {[]}
しかし、まだ質問があります。なぜ同じ配列のままなのでしょうか?