是否可以在Groovy中定義一個全新的運算符?我想表達如果有人購買了200項的10的價格像這樣的行業:是否可以在Groovy中定義一個新的運算符?
def trade = 200 @ 10
這是可以實現的?
感謝
編輯:我想更清楚地表明我感興趣的定義運營商不加入的方法。乾杯。
是否可以在Groovy中定義一個全新的運算符?我想表達如果有人購買了200項的10的價格像這樣的行業:是否可以在Groovy中定義一個新的運算符?
def trade = 200 @ 10
這是可以實現的?
感謝
編輯:我想更清楚地表明我感興趣的定義運營商不加入的方法。乾杯。
我不太清楚你如何使這項工作爲@
跡象,但你一定可以添加這樣的操作,我居然找到更多的表現:
Number.metaClass.buyFor { Integer price ->
delegate * price
}
def result = 200.buyFor(10)
println result
感謝您的意見。不幸的是,這並不能真正回答我的問題。我知道我可以通過「猴子補丁」添加方法,但我真的想定義一個運算符。 –
看起來像'@'符號還不支持[可重載操作符](http://groovy.codehaus.org/Operator+Overloading)。如果您可以爲任何可用的操作員解決問題,則可以按照上述說明執行操作。 –
Number.metaClass."@" {Integer x -> delegate * x}
assert (2.'@' (2)) == 4
感謝您的參與。你很近,但沒有雪茄。正如我提到的本,我正在尋找一個問題的答案是否可以定義一個新的OPERATOR不添加方法。 –
不,目前這是不可能的,你必須使用現有的操作員來定義你自己的操作 –
+很好的問題:) –
看來,[Spock Boys](http://code.google.com/p/) spock/wiki/Interactions#Return_values)已經設法用一個'>>>'運算符來完成它,這個運算符在[運算符重載](http://groovy.codehaus.org/Operator+Overloading)先生。 Muschko](http://stackoverflow.com/users/528428/benjamin-muschko)。 有人可以解釋它是如何做到的或提供一個definitve否?我很害怕我覺得我不能接受當前的答案。 感謝您的支持與我。 –