私は最近、少し複雑なデータ構造を作成する必要があり、連想配列でもう少し遊び始めました。 これらは他の言語の辞書に似ています。 違いは、ほとんどの言語はスピードを上げるためです。辞書の中のオブジェクトを変数に代入するときは、データバインディングを行います。 基本的にそれはそれを辞書と変数の両方が同じメモリブロックを参照するようにし、一方へのいかなる編集も他方に影響を及ぼす。 しかし、JMPはこれを行いません。 以下は、私が話していることを説明するのに役立つサンプルコードです。
testAA = Associative Array(
{
{"test1", Associative Array(
{{"data", {"data1", "data2"}}}
)},
{"test2", Associative Array(
{{"data", {"data1", "data2"}}}
)}
}
);
//create new object
AA = testAA["test1"];
//adding data to AA doesn't add data to testAA
AA["newData"] = "newData";
//you can see AA is a new object
print(AA, testAA);
//Work around to ensure data structures are in sync
testAA["test1"] = AA;
print(AA, testAA);
言語としてのJSLがこの振る舞いをデフォルトにしたいとは思わない。 b / cこれは多くの新しいプログラマーにとって混乱を招く可能性があり、JSLには特に多くの非プログラマーエンフイストがいます。 ただし、このロジックはデータテーブルにも適用されます。 AKA:
test = New Table("Hello");
test2 = test;
test << New Column("NewColumn");
print(test2 << Get Column Names);
必要に応じてデータオブジェクトを参照する別の代入演算子があれば、本当にいいと思います。 このようにして、新しいオブジェクトが欲しいのか、他のオブジェクトへの参照が欲しいのかを選択できます。 私はこの問題について他の人の考えに興味があるでしょう。 また、私は完全に間違っている可能性があり、これを実行するために連想配列をハッキングする方法がまだ見つかっていない可能性があります。
ありがとうございます。