「GoToコマンド」の編集履歴(バックアップ)一覧に戻る

GoToコマンド - (2006/09/21 (木) 16:08:10) のソース

**GoToコマンド
シナリオ中でGoToコマンドを実行すると、指定したラベルへと移動することができます。

コマンド名からしてその流れは一方通行のようですが、Returnコマンドで戻ってこれます。その後も何事も無かったかのように動作します。

もちろんExitで終了しても問題なし。

引数の無いCallコマンドとでも言うべきでしょうか。

しかしGoToコマンドはCallコマンドと違って、イベントラベルとして定義されているラベルへも飛ぶことが出来ます。

結局、GoToコマンドはイベントラベルへの移動特化、Callコマンドは通常ラベルへの移動特化として使い分けたほうが混乱も無くていいですね。



-追記 Date:06/09/21

本来サブルーチンは「呼び出される→Returnコマンドが実行され、呼び出された場所へ戻る」というのが普通の動作だが、適当なラベルを用意し、GoToコマンドでそのラベルへ飛ぶことでどこへでも帰ることができる。

GoToコマンドによる帰還のメリットとして、サブルーチン内で作成されたローカル変数が削除されない、というものがある。
これは確認済みで、ローカル変数はExitコマンド、Returnコマンドの実行と同時に削除されていると思われる。

ただし、SRCでは再帰処理が可能なので、Localコマンド実行直後のExitまたはReturnで削除されるわけではない。
そこらへんにご注意を。

-サンプル例
 スタート:
   local test1 = "テスト1"
 
   call テストルーチン
   スタート2:
 
   talk
   test2:$(test2)
   end
 Exit
 
 テストルーチン:
   talk
   test1:$(test1)
   end
   
   local test2 = "テスト2"
 GoTo "スタート2"
 
 ターン 1 味方:
   talk
   test2:$(test2)
   end
 Exit
目安箱バナー