【第68回】ロータス博士のWinActor塾~シナリオファイル呼び出しⅣ
さあ今回でシナリオファイル呼び出しは最後から2番目じゃぞ。
気合を入れて塾を始めよう。
あ、まだ続きあるんだ。まさかこんなに長編になるなんて。
でもやってみると意外と簡単でしたよね。今回も簡単だといいんですけど。
心配ご無用!今回も簡単じゃぞ。
「戻り値」というものを使ってみようのコーナーじゃ。
前回のシナリオをちょっと改造して実践してみよう。
お、今回も実践ですね!
僕実践のほうが得意ですよ!
おぬし、座学だと寝るからのう…。
では元気なうちにやるとしよう。
戻り値とは
前回は呼び出し先のシナリオを実行する際に、変数の値を渡すことを学びました。
今回は逆に、呼び出し先のシナリオが完了したときに、その結果を持ち帰る機能を紹介します。
この機能を使うと、呼び出し先の実行が完了した際に、呼び出し元に値を返すことができます。
そして、この持ち帰られる値のことを戻り値(もどりち)と呼びます。
戻り値を利用するには、呼び出す側と呼び出される側の両方のシナリオで設定が必要です。
シナリオ終了ノード
「シナリオ終了」はシナリオファイル呼び出しで実行されたシナリオを終了する時に利用されます。
戻り値を利用するには、このノードが必要になります。
このノードはver7.2から追加されたノードのひとつです。
WinActorをアップデートしていればライブラリの追加等は不要です。
ノードは以下の場所からドラッグ&ドロップでフロー上に配置します。
ノード > フロー > シナリオ終了
シナリオ終了ノードのプロパティ
シナリオ終了には設定項目がひとつしかありません。
「戻り値」に設定した値が呼び出し元に渡されます。
戻り値には値を直接入力することも、変数を指定することも可能じゃ。
これは用途によって使い分けてもらえればよい。
それでは実践開始じゃ。前回のシナリオを使うので、準備しておくのじゃぞ。
前回のシナリオを準備していないかたはこちら
シナリオBの改変
前回作成したシナリオBを使って、戻り値を設定してみましょう。
シナリオの変更点
前回は、シナリオAから受け取った値を2倍して表示して終了し、シナリオAに戻るというものでした。
しかし今回はシナリオAから受け取った値を2倍したら、その値をシナリオAに返してあげます。
そしてシナリオAに正しく値が渡されたかを確認するため、シナリオA側で表示処理を行います。
シナリオの全体図は次のようになります。
シナリオ全体図
前回はこのシナリオBで結果を表示していましたが、今回はシナリオAで表示を行うため削除します。
代わりに、戻り値を利用するために「シナリオ終了」ノードを配置します。
「四則演算」に変更はありません。前回のままで使用します。
シナリオ終了ノードの設定
戻り値に「計算結果」を指定しましょう。
「計算結果」の変数には四則演算ノードで2倍された値が格納されています。
変更箇所はこれだけです。
ここまでできたら保存して閉じてしまって大丈夫です。
それでは続いて、呼び出し元のシナリオAを改変しましょう。
シナリオAの改変と実行結果
前回シナリオAはシナリオBを呼び出すだけでしたが
今回はシナリオBからの戻り値を表示させるため、待機ボックスを追加します。
また、戻り値を利用する際には、その値を受け取るための変数が必要になるのでそちらも追加しましょう。
シナリオ全体図
戻り値を表示させるための待機ボックスを、シナリオファイル呼び出しの後に配置しています。
変数
戻り値を格納するための変数として「結果」という名前の変数を追加します。
初期値は空のままです。
各ノードのプロパティ
「シナリオファイル呼び出し」ノードでは、シナリオBからの戻り値を受け取る変数を指定する必要があります。
プロパティを開き、「戻り値」に先ほど追加した変数「結果」を指定しましょう。
待機ボックスでは、受け取った戻り値を表示させたいので
表示メッセージに「結果」の変数を指定しましょう。
ここまで設定ができたらシナリオの改変は完了です。
それではシナリオAを実行してみましょう。
実行結果
前回まではシナリオBで表示していた計算結果が、戻り値としてシナリオAの変数「結果」に返され
シナリオA内で表示できるようになりました。
どうじゃ、なかなか面白いじゃろう。
こうしてシナリオ間で値を渡したり、受け取ったりすることができるのじゃ。
シナリオを分けると両方で使えない変数が出てきちゃうと思ってましたけど
こうして受け渡しをすることでうまくいくんですね!
ところで、戻り値ってひとつだけしか指定できないんですか・・・?
お、良い質問じゃ。
残念ながら戻り値はひとつだけしか指定できないのじゃ。
じゃが、複数の値を返したいときもあるじゃろう。
次回はそのやり方を解説するぞ。
おお、複数いけるんですね!?
そうなると本格的にシナリオファイル呼び出しが使えそうですね。
あとは作り手の技量次第という訳じゃな!
それでは次回をお楽しみに!
関連記事こちらの記事も合わせてどうぞ。
2024.11.05
【第105回】ロータス博士のWinActor塾~新しい画像マッチング画面
2024.09.27
【第104回】ロータス博士のWinActor塾~ガイド利用シナリオ(作成編)
2024.09.10