【26】いっしょにまなぼう!

Breakout #26 - Objects - Pico-8 Hero PICO-8
Breakout #26 - Objects - Pico-8 Hero

TeamworkCastが配信している、PICO-8のチュートリアル動画の解説を連載中です。

前回はこちら

そして今回の動画はこちらになります。

Breakout #26 – Objects – Pico-8 Hero
Breakout #26 – Objects – Pico-8 Hero

チュートリアル動画のソースコードを参考にして、自分も確認するためのコードを書いてみました。

arry={}
arry_a={}
arry_b={}

arry_a.name="arry_a"
arry_b.name="arry_b"

arry[1]=arry_a
arry[2]=arry_b
arry_b.name="arry_c"
arry[3]=arry_b

for i=1,#arry do
  print(arry[i].name)
end

print("")

a="arry_a"
b="arry_b"

arry[1]=a
arry[2]=b
b="arry_c"
arry[3]=b

for i=1,#arry do
  print(arry[i])
end

実行結果は、
arry_a
arry_c
arry_c

arry_a
arry_b
arry_c
となりました。

この2つの実行結果の違いから、テーブルはアドレスを指していて、変数は実際のデータを扱うことになります。

理由は、初めの結果表示では、arry_b.name=”arry_b” を arry_b.name=”arry_c”に途中で変更すると、先に代入していた arry[2] も “arry_c” になってしまいます。
これは、アドレスとして arry に代入しているため、後から変更するとそのアドレスを参照しているものは全て変更されてしまうのです。

次の結果表示では、データを代入しているため、途中で変更したものの変数名で代入しても、先に代入したものは変更されていません。

このような性質があることを予め知っておくことで、これからテーブルを扱うことに気をつけることが出来ます。

コメント

タイトルとURLをコピーしました