1
我是Groovy中的新成员,之前我只完成了C#和C++,所以我在习惯使用Java的时候遇到了一些问题,特别是我们用于项目的Groovy。所以这个问题涉及到Groovy。Groovy中的基本操作符重载
我想:
- 创建一个新的X类:
class X {
double val
}
- 超载基本运算符(+, - ,*,/,**等)变量的类X
问题是: - 在Groovy我可以重载运营商级的X包括一个属性 - 值(即双)
X plus(X obj){
X newobj = new X(this.val + obj.val)
return newobj
}
和
X plus(double obj){
X newobj = new X(this.val + obj)
return newobj
}
但我怎么做,如果双宾语是第一的位置(左边)除?像:
double a X b X result = a + b // it will not work because operator + of a is not overloaded to provide addition of b
我需要重载这样的事情,但对于双运营商?:
ArrayList.metaClass.plus << {Collection b ->
[delegate, b].transpose().collect{x, y -> x+y}
}
在 Overloading + operator for arrays in groovy
有人说也许有添加的方式方法作为闭包访问元类?
不幸的是,数组的例子是我在互联网上找到的最接近的答案。希望有一种方法!
感谢它的工作!我不知道的问题是一些语言限制。我们不是在纯粹的Groovy上工作,而是为GPU编程开发的,所以我可以在Groovy中运行它,但测试不能在GPU上运行。所以我已经定义了哑函数而不是重载:) –