Groovy的操作符重载

Groovy的操作符重载

你可以使用Groovy实现操作符重载, 那么 Groovy是怎么做到的了?其实非常简单, 事实上 —每个运算符都有一个标准的映射方法.因此, 在Java中你可以使用这些方法,对于Groovy 你 可以使用操作符或操作符对应的方法,这两者任意一种. 这里一个实例展示操作符重载:


for(i = 'a' ; i < 'd' ; i++) {
    println i
}

你使用’++’操作符来循环’a’—‘c’中的字符.这个’++’操作符映射到String类的next( ) 方法. 上面代码的输出:
a
b
c
我们再来看一个,其他这个JDK1.5的循环在这里也是使用String的 next( ) 方法:

for (i in 'a'..'c' ) { 
    println i 
}

String类有许多重载操作符, 你会在后面看到. collection类—ArrayList 和Map—也有方便的重 载操作符.假如你想添加一些元素到collection中, 你可以使用 << 操作符,它会转化为 Groovy 为Collection添加的额外方法leftShift( ) ,像这里:

lst = ['hello' ] 
lst << 'there' 
println lst

输出:[“hello” , “there” ]

你可以通过添加映射方法来为自己的类提供操作符, 像 plus( ) 对应+. 这里将展示一个操作符重载:

class ComplexNumber {
    def real, imaginary
    def plus(other) {
        new ComplexNumber(real: real + other.real,imaginary: imaginary + other.imaginary)
    }
    String toString() {
        "$real ${imaginary > 0 ? '+' : ''} ${imaginary}i" }
    }

c1 = new ComplexNumber(real: 1, imaginary: 2)
c2 = new ComplexNumber(real: 4, imaginary: 1)
println c1 + c2

因为你ComplexNumber类中添加了plus( ) 方法,Groovy 允许你使用 + 获取两个复数相加 的结果 ,输出:5 + 3i
在某些方面操作符重载使表达式更具表现力. 不过, 通常情况下我并不喜欢操作符重载,因为 它很难被理解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值