v16R4:配列とCOLLECTION

ドキュメントに、OBJECT配列をCOLLECTIONにポインターとして参照できると書いてあったので試してみた。

配列をダイレクトにCOLLECTIONに変換するコマンドがないですね。

<code 4D>
ARRAY TEXT($text_at;0)
APPEND TO ARRAY($text_at;“item1”)
APPEND TO ARRAY($text_at;“item2”)
APPEND TO ARRAY($text_at;“item3”)
C_COLLECTION($array_c)
$array_c:=New collection($text_at)
</code 4D>
こんな感じ?

あとこれの逆で、COLLECTIONを配列に変換できないでしょうか。
<code 4D>
ARRAY TEXT($text_at;0)
COLLECTION GET ARRAY($array_c;$text_at)
</code 4D>

要望です。 :pray:

16R4はベータ段階なので,

Feature Req. ではなく,Betaに転送いたしました。

http://forums.4d.com/Post//20147561/1/

http://forums.4d.com/Post//20147763/1/

転送ありがとうございます。 :pray:

: Keiji HOSAKA

$array_c:=New collection($text_at)

こちら(前半)についてのみ,転送先で返信がありました。

数値型と配列のいずれかを受け付けるコマンドの場合,
コンパイラーの設計上,どちらのデータ型として評価するか,
アプリケーション全体で統一しなければならない,という制約があるとのことです。

ですから,仮に

$array_c:=New collection($text_at)

を認めた場合,

{n}を伴なわない$text_atは,今後,数値として処理されないことになり,
既存のメソッドに深刻な影響が及ぶことになります。

ですから,

やるとすれば,

COLLECTION TO ARRAY
ARRAY TO COLLECTION

のように明示的なコマンドを検討する必要があります。

余談ですが,

OB GetとOB GET ARRAY,JSON ParseとJSON PARSE ARRAYが分かれているのも同じ理由かもしれません。

ご説明ありがとうございます。

: Keisuke MIYAKO

やるとすれば,

COLLECTION TO ARRAY
ARRAY TO COLLECTION

のように明示的なコマンドを検討する必要があります。

そういう問題があるのであれば、引数はどの様な形でも問題ないと思います。
OBJECTのフィールドとオブジェクト名の切り分けの様に

$array_c:=New collection(*;$text_at)

とか

//param_arrayは定数と仮定
$array_c:=New collection(param_array;$text_at)

などはどうでしょうか? :pray: