配列の初期化・Array.new

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

Array.newで配列を初期化する場合のやり方です。

a = Array.new(3, 0)
p a
a[1] = 2
p a
 
b = Array.new(3, [0, 0, 0])
p b
b[1][1] = 2
p b        # b[0][1], b[2][1]も2になってしまう
 
c = Array.new(3){[0, 0, 0]}    # ブロックを渡して初期化
p c
c[1][1] = 2
p c        # 今度は意図したとおり
 
d = Array.new(20){|i| i * 2}    # iにはインデックスが渡される
p d

実行結果。

[0, 0, 0]
[0, 2, 0]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 2, 0], [0, 2, 0], [0, 2, 0]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 2, 0], [0, 0, 0]]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]

日時: 2008年06月25日 21:26
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/365

この記事にトラックバックされる方は、参照先が分かるようにするために、「配列の初期化・Array.new」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - Ruby勉強ルーム