次のコードでは、Execute() 関数を使用して文字列 "x" を格納した変数 var をループ変数「x」に変換し、その値を出力します。ここでは、番号 1 ~ 10 が出力される代わりに「undefined」が 10 回返されます。
失敗する理由は次のとおりです。
var ="x" for x = 1 to 10 do ( y = execute var print y )
この質問の答えは、Execute が常に グローバル スコープを使用するという事実に基づいています。一方、for ループは常に新しいスコープを作成し、変数「x」はこのスコープに対してローカルです。これが、当初の問題とその解決方法を理解する上で重要な点です。つまり、Execute はグローバル スコープ内ではローカル変数「x」を「参照しない」のです。
番号 1 ~ 10 を正しく出力するための考えられる解決方法を次に示します。
例:
global x --define a global stand-in variable for executing var = "x" --define the string to execute for xx = 1 to 10 do--the loop has a different var name ( x = xx --copy the loop variable into global scope y = execute var --execute in global scope print y --print the result )