我最近需要創建一些稍微複雜的資料結構,並開始更多地使用關聯數組。 這些與其他語言的字典類似。 它們的不同之處在於,大多數語言為了提高速度,將字典中的物件分配給變數時,都會進行資料綁定。 從本質上講,它使得字典和變數都引用同一塊內存,並且對其中一個的任何編輯都會影響另一個。 然而,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 讓許多非程式設計師愛好者感到困惑。 但是,此邏輯適用於資料表。 又名:
test = New Table("Hello");
test2 = test;
test << New Column("NewColumn");
print(test2 << Get Column Names);
我認為如果有另一個賦值運算符可以在需要時引用資料對象,那就太好了。 這樣我就可以選擇是否想要一個新物件或對另一個物件的參考。 我會對其他人對此主題的想法感興趣。 另外,我可能完全錯誤,可能有一種方法可以破解關聯數組來做到這一點,但我還沒有找到。
謝謝!