嗨员工
我想开始在脚本中使用 JMP 类,但遇到了一个不幸的行为:为方法提供参数时,参数被视为类成员,这使得类几乎无法使用,因为方法的参数取决于是否类成员已经使用该变量。 我发现没有办法强制向方法发送全局或此处:变量。 我相信这是一个错误。 以下代码重现了这种行为:
define class ("aClass",
varA = .;
aMethod=method({someVar},
varA = someVar;
show(someVar);
)
);
obj=new object(aClass());
varB=3;
obj:aMethod(varB);
varA=4;
obj:aMethod(varA);
obj:aMethod(::varA);
在上面,因为 varA 既是全局变量又是方法变量,“aMethod”在参数中只得到 3 而不是 4。 因此行为受内部类成员名称和全局变量名称之间的交互影响。
亲切的问候,
托马斯
我同意,它看起来确实像一个错误。@EvanMcCorkle @Audrey_Shull
一种解决方法是在成员变量名称前加上 m_ 前缀。 很长一段时间以来,我一直使用该前缀或变体来帮助阅读代码的任何人理解他们何时查看成员变量。