当java使用pass by value references时,如何实现groovy right shift重载操作符

时间:2016-10-18 08:41:43

标签: groovy operator-overloading

脑部日子不好。我试图实现>>类的右移运算符,并希望它从类

中输出变量
class SomeImplClass () {....
def rightShift (evalResult){
    evalResult = this.evaluate()
    println "rightShift : outputiing  $evalResult"
    this
}

并使用

def res
def im = new SomeImplClass(); im >> res

当res通过值传递时,这可以在右移的主体内工作,但是当你走出调用者时,res不会被设置 - 它仍然指向原始内存地址。

那么你如何实现正确的转换来改变外部范围中变量指向的值?

1 个答案:

答案 0 :(得分:0)

我发现这样做的唯一方法是将一个闭包作为参数传递给右移,然后用你要发送的值调用该闭包

由于闭包带有生日上下文,您可以处理传递给该闭包的paramwater,以设置闭包可以通过其上下文访问的变量。