Ruby中二维数组插入元素的问题
天蓬老师
天蓬老师 2017-04-21 11:18:00
0
3
763

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

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]

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(3)
左手右手慢动作

リーリー

このメソッドで作成された10個の空の配列は同じオブジェクトです

別のオブジェクトを作成したい場合は、次の方法を使用してください。

リーリー

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

いいねを押す +0
迷茫

上記に追加すると、すべての object_id は同じです
foo.map(&:object_id)
=> [9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880, 9298880]

いいねを押す +0
刘奇

私は普段地図を使います
(1..10).map {[]}

しかし、まだ質問があります。なぜ同じ配列のままなのでしょうか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート