假设:
知道在caché对象脚本中:
如果我想传递属性“intA”byRef,我该如何调用classMethod foo?因为在3个点之前的属性名称前面似乎不是正确的方法。
代码段B类:
Class B Extends %RegisteredObject
{
///doubles num
ClassMethod foo(ByRef num As %Integer)
{
set num = num*2
}
}
代码段A类:
Class A Extends %RegisteredObject
{
Property intA As %Integer;
Method test()
{
set ..intA= 5
do ##class(B).foo(..intA)
//If correctly passed by ref, ..intA should be 10, but it is still 5
}
}
提前致谢。
答案 0 :(得分:2)
只能通过引用传递本地或全局变量。对于属性,它是不可能的。您可以将属性名称作为字符串传递,并使用$ property方法设置值。如果你需要在类方法或/和其他类中执行它,你也应该传递变量。所以你的代码可能会像这样:
ClassMethod foo(this, propName As %String)
{
set $property(this, propName)=$property(this, propName) * 2
}
Method test()
{
set ..intA=5
do ##class(b).foo(%this, "intA")
}