v16R4:Value typeコマンドが見つからない

Product :4D - 4D Server
4D : v16R4(213526)
OS : Mac OS X

Value typeコマンドが見当たらないみたいなのですが、まだ未対応でしょうか?

16R4(初期ベータ)では,Typeが拡張され,変数だけでなくスカラー値も渡せるようになりました。

例:

ASSERT(Type(“abc”)=Is text)
ASSERT(Type(Pi)=Is real)

その主要な目的は,オブジェクト記法で参照されたプロパティのタイプを調べられるようにすることでした。

$o:=New object(“foo”;Null)
ASSERT(Type($o.foo)=Is null)

しかし,これでは不都合があることが判明しました。

たとえば,歴史的な理由により,スカラー値は上位キャストされるため,

$i:=Type([Table_1]整数)
$i:=Type([Table_1]整数64ビット)

はインタープリターモードでIs integer/Is integer 64 bits,
コンパイルモードでIs longintを返すことになります。(文字列/テキストも同様)

またテキスト配列を渡した場合,
配列を参照しているのか,
配列の添字(整数)を参照しているのか,
曖昧になってしまいます。

そのようなわけで,コマンドの仕様を見直し,
Typeは従来の振る舞いに戻され,
新しくValue typeが提供されることになりました。

開発は完了していますが,
Rリリースのアジャイルプロセスにより,
これはユニットテストやドキュメントなど,
すべてをパスした時点で16R4に統合されることになります。

なお,Value typeで配列・整数フィールドなどの「数値」を評価した場合,
インタープリターモードではIs real,コンパイルモードではIn longintが返されます。
オブジェクト型のプロパティは,モードに関係なく,常にIs realです。

Value typeが公開され次第,Typeは従来どおり変数・フィールドの参照を評価するコマンドに戻されます。

情報がご参考になれば幸いです。

まだ実装されていなかったんですね。 :mrgreen:

ところで、オブジェクト型はOB GET Typeコマンドがあったと思いますが、
OB GET Typeの引数拡張ではない理由ってなんなんでしょうか?
普通にOB GET Type($o.foo)で良い様におもいます。(他のコマンドで引数が違うものもありますし)

あと、Typeでフィールドからオブジェクト型へ変換してテストしてみたのですが、日付と時間がis Date is Timeで取得できないんですね。
オブジェクト型とフィールド(オブジェクト型以外の変数型も)とで相互変換ができないのはどうかと思います。
少なくとも現状、日付はISOフォーマットなのでis Dateと返ってきてもと思いました。 :doubt:
日付のフォーマット拡張と一緒に時間のフォーマットも拡張して、パースできればそれぞれis Date、is Timeと返してはどうでしょうか?

日付と時間について

http://forums.4d.fr/Post//19725762/1/

: Keiji HOSAKA

OB GET Typeの引数拡張ではない理由ってなんなんでしょうか?

オブジェクト記法の導入により,OBコマンド全般はその役割を終えることになります。

引き続き必要なものについては,OB New->New objectのように,接頭辞が外されました。

オブジェクト記法が使われるようになると,オブジェクトのプロパティと一般の式の区別も曖昧になるので,ランゲージもいろいろと見直しが必要になるようです。

: Keisuke MIYAKO

日付と時間について

http://forums.4d.fr/Post//19725762/1/

ありがとうございます。

: Keisuke MIYAKO
: Keiji HOSAKA

OB GET Typeの引数拡張ではない理由ってなんなんでしょうか?

オブジェクト記法の導入により,OBコマンド全般はその役割を終えることになります。

引き続き必要なものについては,OB New->New objectのように,接頭辞が外されました。

オブジェクト記法が使われるようになると,オブジェクトのプロパティと一般の式の区別も曖昧になるので,ランゲージもいろいろと見直しが必要になるよ
です。

なるほど、OBコマンドが無くなる方向なんですね。 :sunglasses:
だとすると、

$test.name.type

じゃないかと勝手に思います。 :mrgreen:

: Keisuke MIYAKO
: Keiji HOSAKA

OB GET Typeの引数拡張ではない理由ってなんなんでしょうか?

オブジェクト記法の導入により,OBコマンド全般はその役割を終えることになります。

ちなみに、OB GET Type以外のコマンドで、なくなるものとリネームされるものがどれか教えていただけませんか。 :pray:

原則的に,廃止予定コマンドには,_o_接頭辞が付けられます。

http://doc.4d.com/4Dv16R3/4D/16-R3/Deprecated-or-removed-features-in-v16-product-range.200-3269261.ja.html

OB@コマンドはなくなるというよりは,必要性が薄れるという扱いです。

オブジェクト記法を有効にしないという選択肢もある以上,
OB Get, OB SET, OB SET ARRAY, OB GET ARRAY, OB Get type等は,
いずれも現行のコマンドです。

実際,16R4でピクチャ型およびコレクション型に対応しました。

http://doc.4d.com/4Dv16R4/4D/16-R4/OB-Get.301-3318080.ja.html>