3

Scratch 2.0 では、カスタム スタック ブロック (プロシージャ) のサポートが追加されました。しかし、これを使用して値を返すロジックを「抽象化」する方法はありますか?

たとえば、単純に指数を計算するスクリプトをここに示します: (グラフィック表示を表示)

set [base v] to [2]
set [index v] to [3]
... // above is for initializing
set [result v] to (base)
repeat until <(index) = [1]>
  set [result v] to ((result) * (base))
  change [index v] by (-1)

このロジックを「カスタム レポーター」にエクスポートして再利用するにはどうすればよいですか?

4

3 に答える 3

0

これを行う最も簡単な方法は、カスタム コマンド ブロックを作成し、戻り値を変数に格納することです。これには、再帰呼び出しが許可されないなどの欠点がありますが、ほとんどの場合に機能します。画面を更新せずにブロックを実行するように設定することもお勧めします。

次のように定義するだけで、戻り値は次のように使用できますresult

define (base) ^ (exp)
set [index v] to (exp) // need a variable, as arguments are immutable
set [result v] to (base)
repeat until <(index) = [1]>
  set [result v] to ((result) * (base))
  change [index v] by (-1)

次に、次のように呼び出すことができます。

when gf clicked
(4) ^ (3) // the stack block
say (join [4 ^ 3 = ] (result)) // result is set by the [()^()] block

レンダリングされた ScratchBlocks でこれを参照してください。

于 2015-01-14T16:50:57.977 に答える