更新作为类全局变量的关联数组你好,
我有一个类变量,它是一个关联数组
define class (
"class name",
ass_array = associative array ();
meth1 = method({x,y},
for(i = 1, n <= n items(x),i++
xi = x[i];
yi = y[i];
try(
ass_array << insert(xi, Insert(eval list(ass_array[eval(xi)]), eval(yi))),
ass_array << insert(xi, List(eval(yi)))
);
);
);
);但是当我调用此类来更新关联数组时,该数组仍然为空。有什么想法吗?
还值得注意的是,我在类外部测试了这个语法来更新关联数组,并且它的表现符合预期。
自动化和脚本视窗回复:更新作为类全局变量的关联数组我认为你可能想要添加初始化方法
Names Default To Here(1);
Define Class("class name",
ass_array = Associative Array();
_init_ = Method({},
this:ass_array = ass_array;
);
meth1 = Method({x, y},
ass_array = Associative Array();
For(i = 1, i <= N Items(x), i++,
xi = x[i];
yi = y[i];
Try(
ass_array << Insert(xi, Insert(Eval List(ass_array[Eval(xi)]), Eval(yi))),
ass_array << Insert(xi, List(Eval(yi)))
);
);
);
);
cn = New Object("class name");
show(cn:ass_array);
cn:meth1({"a", "b"}, {"c", "d"});
show(cn:ass_array);
这不是必需的,我不确定是否应该使用它(但这里使用了https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-classes.shtml#ww761769 )
回复:更新作为类全局变量的关联数组你好,
所以,我有一个 init 方法。出于懒惰,我没有把整个类的工作流程放上去。我认为没有必要排查问题。
回复:更新作为类全局变量的关联数组但是,使用this:array实例化变量似乎已经起作用了。
这为什么会有区别呢?
回复:更新作为类全局变量的关联数组如何使用 Define Class可能会给出一些解释