かなり久しぶりの ML ですね、cafeyuuma@ さんこんにちは C.C. です (^^;;
まず、BASIC や COBOL はコンパイラ系もインタプリタ系も両方あります。
最近では殆どコンパイラかビーコードコンパイラと呼ばれるタイプが主流です。
また、プログラムが上から下に順に流れていくのは程んどの言語同じですが、
それは処理ラインが同じ場合で、メモリを介した遅延実行やエクセプションな
どがあれば、同コード上に別時間軸の別処理ラインを記述する言語体系もあり、
これはインタプリタとかコンパイラの違いではなく言語仕様の違いが大です。
で、本題の CoronaSDK は Lua を使っていますが、cafeyuuma@ さんが書い
たようなコードの場合、変数ではなく即値がコピーされます。
詳しくは abcde の中をダンプしてみて頂ければわかりますが・・
abcde.text = “3”
こんな感じに、文字列として格納されちゃってますので、コピー後の abc の
生き死には全く関与しません。
変数は、ライフタイムとスコープがあるので、それを意識するとわかりやす
いかもしれませんが・・
abc は関数に属しているローカル変数ですので、関数が終了すればライフタイ
ムが終了して削除されます、スコープも同じ期間です。
abcde はディスプレイオブジェクトで、ディスプレイグループに属しているの
で、ライフタイムはディスプレイグループに属しています、スコープはこの関
数終了で終わってしまって見えなくなります。
(この場合も死んだわけではないので無理やり見直す方法もあります)
ここでは、ローカル変数に入れているように見えますが、実際そこには指し
示すポイントのようなものが入るだけで、そこに実体はいないというのがポ
イントになります。
この辺りは、CoronaSDK というより Lua と言う言語の特性ですので、そち
ら系の資料を見るか動作した状況の中身を見て、どう動いているか判断した
方が良いと思いますが・・
って、話が長くなってしまいましたが、こんな感じでわかりますか? (^o^!
> 2017/03/09 0:50、
cafe...@gmail.com のメール:
>
> 基本的なプログラムの流れについて質問です。
> local abc = 3
> local abcde = display.newText(abc, _w/2, _h/2, nil, 30)
> abcde:setFillColor(192, 192, 192)