大西Scratch日記

Scratch初心者です。勉強するためにブログを始めてみます

変数のスコープ

Scratchの変数のスコープは「すべてのスプライト」と「このスプライトのみ」の2種類があります。
「すべてのスプライト」は読んだとおり、グローバル変数でしょう。
スプライトのオリジナルをクラス、クローンをインスタンスと考えた場合、「このスプライトのみ」はクラス変数なのか、インスタンス変数なのか調べてみました。

こんなプログラムです。
f:id:onishi:20170422154556j:plain

スタートすると、3匹の猫がクローンされます。クリックされるごとに「すべてのスプライト」変数と「このスプライトのみ」変数をそれぞれインクリメントします。

f:id:onishi:20170422154816j:plain:w430

するとこのように、クローンされたスプライトごとに「このスプライトのみ」変数が保持されていることがわかります。インスタンス変数ということですね。
複数のクローンされたスプライトで共用する、クラス変数のようなものは持てないことがわかります。それはクローンのオリジナルの「このスプライトのみ」変数でもグローバル変数でも代用はできそうですね。

作ったプログラムはこちら。
scratch.mit.edu