嗨员工
我想开始在脚本编写中使用JMP类,但是遇到了一个不幸的行为:当给方法提供参数时,将参数视为类成员,这使类几乎不可用,因为方法的参数取决于类成员已经使用了该变量。我发现没有办法强制向该方法发送全局变量或here:变量。我相信这是一个错误。下面的代码重现了此行为:
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既是全局变量又是metod变量,所以“ aMethod”在参数中只得到3而不是4。因此,行为受内部类成员名称和全局变量名称之间相互作用的影响。
亲切的问候,
汤玛士
我同意,它确实看起来像个错误。 @EvanMcCorkle @audrey_shull
解决方法是在成员变量名称前添加m_。我已经使用该前缀或变体很长时间了,以帮助阅读代码的任何人理解他们在查看成员变量时的理解。