TeamworkCastが配信している、PICO-8のチュートリアル動画の解説を連載中です。
前回はこちら。
そして今回の動画はこちらです。
【解説メモ】
カプセルのテーブル操作から、「なぜテーブル内容を降順で操作していくのか?」の検証です。
arr={"a", "b", "c", "d"}
for i=1,#arr do
if arr[i]="c" then
print("deleting")
del(arr,"c")
else
print(arr[i])
end
end
結果
a
b
deleting
nil
for 文で end までを昇順で4回繰り返します(テーブルの要素は4)。
添字( i )の内容を print 文で表示しますが、内容がc の場合は「deleting」と表示し、cをテーブルから削除します。
削除されて要素の数は3となりますが、繰り返しは4回ですので、最後の4回目は要素がない為、nil と表示されます(3番目が d になっている)。
実際には、要素がないものに対して操作しようとするとエラーになります。
それを回避するために、昇順ではなく降順で for 文を実行させます。
arr={"a", "b", "c", "d"}
for i=#arr,1,-1 do
if arr[i]="c" then
print("deleting")
del(arr,"c")
else
print(arr[i])
end
end
実行結果
d
deleting
b
a
4回実行され、nil の表示はありません。
降順で要素を操作すれば、テーブルからその要素を削除しても、その先の要素には影響がありません。
for 開始番号, 終了番号, 増加量 do と記述します。
実際のプログラム(ゲームなど)では、テーブルの要素を操作するには(条件で削除をする場合)、降順で処理すること。
コメント