プログラミングゼミ
前回の記事に「スクラッチでの変数の見える範囲」について書きました。
今回はDeNAさんが提供している
「プログラミングゼミ」での変数の中身の残る範囲についてです。
ローカルとインスタンス変数
プログラミングゼミの変数には、「ローカル」と「インスタンス」変数があります。
変数 | 説明 |
---|---|
ローカル | つなげたブロックの間でだけ残る |
インスタンス | キャラが画面にいる間は残る |
インスタンス変数は、スクラッチでいう「このスプライトのみ」の変数と同じです。
プログラミングゼミには、「すべてのスプライト用」という変数はなく、
自分のみの変数だけです。
では、「ローカル」変数とはどんな変数なのでしょうか?
プログラミングゼミのローカル変数は、通常のプログラミング言語と同じで、
メソッドの中で使える一時的な変数で、 { } 内のブロックでのみ使えます。
(いわゆる特定スコープ内でしか使えないローカル変数と同じ意味)
void キャラがタッチされた() { var local = "ベイスターズ"; // ローカル変数 talk(local, 3); // ローカルを3秒喋る }
動きを確認する
実際にブロックで変数の中身を確認してみます。
・スタート時に両方の変数を初期化
・キャラタッチで変数の中身を喋る
インスタンス変数
インスタンス変数は、キャラが生存する限り残り続ける変数です。
スタートで初期化した中身が、キャラタッチ時も残り、喋ることができます。
ローカル変数
ローカル変数は、メソッド内など、{}内のスコープ中のみ残る変数です。
そのため、スタート時に初期化しても、キャラタッチのイベント時には値が残っておらず、
何も喋れません。
ローカルはそのブロック中間のみ生存するので、
キャラタッチのイベント時に中身をセットすれば、
そのブロック中であれば値が残り喋ることができます。
スクラッチとプログラミングゼミでは、変数の範囲が少し違います。
プログラミングゼミでは、基本はインスタンス変数で作り、
特定のブロック間で一瞬しか使わないようなものだけローカルにすると良いでしょう。