是否可以在Groovy中定义一个全新的操作符?我想表达一个交易,某人以10的价格购买200个项目,如下所示:
def trade = 200 @ 10
这是可以实现的吗?谢谢编辑:我想说得更清楚一点,我感兴趣的是定义一个运算符,而不是添加一个方法。干杯。
zte4gxcn1#
我们一直希望能够在Groovy中通过用户定义运算符,但到目前为止,我们还没有解决随之而来的问题。因此,目前的状态是Groovy不支持自定义运算符,只支持那些已经在使用的运算符。
mdfafbf12#
我不太确定如何对@符号执行此操作,但您肯定可以添加这样的操作,实际上我发现这样更有表现力:
@
Number.metaClass.buyFor { Integer price -> delegate * price } def result = 200.buyFor(10) println result
fdbelqdn3#
Number.metaClass."@" {Integer x -> delegate * x} assert (2.'@' (2)) == 4
aoyhnmkz4#
官方文档中有一节是关于运算符重载的:https://groovy-lang.org/operators.html#Operator-Overloading以下是来自文档的列表:
4条答案
按热度按时间zte4gxcn1#
我们一直希望能够在Groovy中通过用户定义运算符,但到目前为止,我们还没有解决随之而来的问题。因此,目前的状态是Groovy不支持自定义运算符,只支持那些已经在使用的运算符。
mdfafbf12#
我不太确定如何对
@
符号执行此操作,但您肯定可以添加这样的操作,实际上我发现这样更有表现力:fdbelqdn3#
aoyhnmkz4#
官方文档中有一节是关于运算符重载的:https://groovy-lang.org/operators.html#Operator-Overloading
以下是来自文档的列表: