是否可以在Groovy中定义一个新的运算符?

时间:2011-06-26 18:22:40

标签: groovy operators dsl

是否可以在Groovy中定义一个全新的运算符?我想表达一个交易,有人以10的价格购买200件商品:

def trade = 200 @ 10

这可以实现吗?

由于

编辑:我想更明确地说我有兴趣定义一个不添加方法的运算符。欢呼声。

3 个答案:

答案 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