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上運行。所以我已經定義了啞函數而不是重載:) –