【小技】Chooseとコンパイラーの型指定

前のトピックを表示 次のトピックを表示 Go down

【小技】Chooseとコンパイラーの型指定

投稿 by miyako on 2016-07-21, 10:33 am

Chooseは,返り値の型が決まっていない,珍しい関数です。

http://doc.4d.com/4Dv15/4D/15.1/Choose.301-2684929.ja.html

そのような関数は,OB Get,JSON Parse,WA Evaluate JavaScript など,ごく少数しか存在しません。

http://doc.4d.com/4Dv15/4D/15.1/OB-Get.301-2686003.ja.html
http://doc.4d.com/4Dv15/4D/15.1/JSON-Parse.301-2686301.ja.html
http://doc.4d.com/4Dv15/4D/15.1/WA-Evaluate-JavaScript.301-2685017.ja.html

一方,入力パラメーターの型が決まっていなかったり,省略できたりするコマンドは,結構,たくさん存在します。

返り値の型が決まっていない関数をそのままコマンドの引数にした場合,コンパイラーがうまく意図を汲み取ってくれないことがあります。

たとえば,下記のコードは,第1引数のテーブルを省略している例ですが,Chooseの返り値が不明であるため,第2引数の数値(ウインドウタイプ)を文字列(フォーム名)に変換しようとしている,というエラーになってしまいます。

Code:
C_LONGINT($Window_Type_L;$Window_Ref_L)
$Window_Ref_L:=Open form window(Choose(true ;"value1";"value2");$Window_Type_L)

そのような時は,Stringを使用し,明示的に型が文字列であることを示すことでコンパイルエラーを避けることができます。

Code:
C_LONGINT($Window_Type_L;$Window_Ref_L)
$Window_Ref_L:=Open form window(String(Choose(True;"value1";"value2"));$Window_Type_L)

v11以降,文字列をStringに渡すことができます。
返されるのは,元の文字列ですが,これにより,汎用的なコードが記述しやすくなりました。

http://doc.4d.com/4Dv15/4D/15.1/String.301-2685399.ja.html

miyako

投稿数 : 206
登録日 : 2016/07/05

トップに戻る Go down

前のトピックを表示 次のトピックを表示 トップに戻る


 
Permissions in this forum:
返信投稿: 不可