範囲オブジェクトで配列取得

192 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/17(土) 02:13:33 ID:xZW0Wz0s
質問ですがXPで

for i in 1..$data_armors.size
if $data_armors[i].name != \"\"
$game_party.gain_armor(i,1)    # $game_party.gain_armor(i,n)はi番のIDの防具をn個取得するメソッド
end
end

とやったんだけどundefined method 'name' for NilClassになるのはどこがまずいの?

試しに適当に
for i in 1..5
p $data_armors[i].name
end
とすれば、\"ブロンズシールド\"、\"アイアンシールド\"…と出るのに

期待していた動作は、データベースで名前を設定していない物以外の防具(名前が\"\"でないもの)を
テストプレイ用に持たせるってことだったんだけど
193 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/17(土) 04:42:45 ID:jTOe2k1W
>>192
undefined method 'name' for NilClassになるのは、
$data_armors[$data_armors.size]がnilだから。

ヘルプ→スクリプト入門→基礎編→ループの
「範囲オブジェクト」の項を読めば、どう対策すれば良いかわかるはず。
194 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/17(土) 05:55:19 ID:xZW0Wz0s
あああなるほど
データベースの上限の一つ次の項目の名前を探してるわけですね
ありがとう