我最近需要创建一些稍微复杂的数据结构,并开始使用关联数组。 这些与其他语言的词典类似。 它们的区别在于大多数语言都是为了提高速度,在将字典中的对象分配给变量时,它会进行数据绑定。 本质上,它使得字典和变量都引用相同的内存块,对一个内容的任何编辑都会影响另一个。 但是,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);
我认为如果有另一个赋值运算符可以在需要时引用数据对象,那将是非常好的。 这样我可以选择是否需要新对象或对另一个对象的引用。 我会对其他人对这个问题的想法感兴趣。 此外,我可能是完全错误的,可能有一种方法来破解关联数组来执行此操作,我还没有找到。
谢谢!