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

xdyibdwo  于 2023-03-01  发布在  其他
关注(0)|答案(4)|浏览(160)

是否可以在Groovy中定义一个全新的操作符?我想表达一个交易,某人以10的价格购买200个项目,如下所示:

def trade = 200 @ 10

这是可以实现的吗?
谢谢
编辑:我想说得更清楚一点,我感兴趣的是定义一个运算符,而不是添加一个方法。干杯。

zte4gxcn

zte4gxcn1#

我们一直希望能够在Groovy中通过用户定义运算符,但到目前为止,我们还没有解决随之而来的问题。因此,目前的状态是Groovy不支持自定义运算符,只支持那些已经在使用的运算符。

mdfafbf1

mdfafbf12#

我不太确定如何对@符号执行此操作,但您肯定可以添加这样的操作,实际上我发现这样更有表现力:

Number.metaClass.buyFor { Integer price ->
   delegate * price
}

def result = 200.buyFor(10)
println result
fdbelqdn

fdbelqdn3#

Number.metaClass."@" {Integer x -> delegate * x} 

assert (2.'@' (2)) == 4
aoyhnmkz

aoyhnmkz4#

官方文档中有一节是关于运算符重载的:https://groovy-lang.org/operators.html#Operator-Overloading
以下是来自文档的列表:

相关问题