是否可以在Groovy中定义一个全新的运算符?我想表达一个交易,有人以10的价格购买200件商品:
def trade = 200 @ 10
这可以实现吗?
由于
编辑:我想更明确地说我有兴趣定义一个不添加方法的运算符。欢呼声。答案 0 :(得分:6)
我们一直希望能够通过Groovy中的用户定义运算符,但到目前为止,我们还没有解决随之而来的问题。因此,目前的状态是Groovy不支持自定义运算符,只支持已经使用的运算符。
答案 1 :(得分:2)
我不太确定你如何为@
符号做这个工作,但你当然可以添加这样的操作,我实际上发现更具表现力:
Number.metaClass.buyFor { Integer price ->
delegate * price
}
def result = 200.buyFor(10)
println result
答案 2 :(得分:0)
Number.metaClass."@" {Integer x -> delegate * x}
assert (2.'@' (2)) == 4