Bool:文字列のTrue/Falseを受け付けて欲しい

データを外部から取得する場合、一部のデータが文字列でTrue/Falseを受け取る事があります。

<code 4D>
C_OBJECT($test)
C_VRIANT($bool)
$test.flag:=Bool($bool)
</code 4D>
と書いてみたのですが動作しないので、
改めドキュメントを確認したら数値とboolean型は対象なのですが、文字列は対象外だったので驚きました。

<code 4D>
C_OBJECT($test)
C_TEXT($bool)
$test.flag:=chooser($bool=“TRUE”;True;False))
</code 4D>
文字列だけならこの様に書けば良いのでしょうが、汎用的に書く場合記述するコード量が増えてしまいます。

素直に

Bool($bool)

とかけると大変助かります。

4Dの場合 Vrai と Faux もキーワードになるからでしょうか。

Chooseは,すべてのパラメーターを評価するので,

Choose($bool=“TRUE”;True;False))

よりも

($bool=“TRUE”)

のほうが効率的かもしれません。

Boolは,NullやUndefinedをキャストするのが主要な役目みたいです。

せっかくのコマンドなのでもっと活用できれば良いなと思います。
NumとかStringとかも同様ですが、
もう少し制限なしで別の型をboole型にキャストして欲しいです。

話はそれますが、

: Keisuke MIYAKO

Chooseは,すべてのパラメーターを評価するので,

Chooseはそうなんですよね。メソッドの引数のディフォルト設定をしようと
<code 4D>
C_LONGINT($option;$2)
$option:=Choose($2;$2;“100”)
</code 4D>
こんな書き方をしてみたのですが、引数$2が実際にないとエラーになります。
現状はこう書かないといけないので引数が多い場合に面倒なんです。
<code 4D>
C_LONGINT($option;$2)
If (Count parameters>=2)
$option:=$2
Else
$option:=100
end if
</code 4D>

該当する値のみ評価する様にはできないでしょうか。
あとメソッドなどをフォーミュラ的に実行してもらえると助かります。

わかりやすく言うとこう言う事でしょうか。

boolean型のみ可逆的でない。 :mrgreen:
<code 4D>
$bool_b:=True
$bool_t:=String($bool_b)
$bool2_b:=Bool($bool_t)

$num_l:=1235
$num_t:=String($num_l)
$num2_l:=Num($num_t)

$date_d:=Current date(*)
$date_t:=String($date_d)
$date2_d:=date($date_t)

$time_d:=Current time(*)
$time_t:=String($time_d)
$time2_d:=Time($time_t)
</code 4D>

https://forums.4d.com/Post//34016564/1/

フィーチャーリクエストを作成しました。

ご登録ありがとうございます。 :pray: