冯国平ID:hivon
201435次访问,排名342好友14人,关注者72
hivon的文章
原创 81 篇
翻译 28 篇
转载 3 篇
评论 259 篇
hivon的公告
有人说,交换一个苹果,我们每人仍然只有一个苹果;交换一个思想,我们每人却有两个思想!
最近评论
qiang106:不错,我去找原作看看
Chninfo:妇科病咨询
avibbs:SAD
johnnyjian:CSDN的评论怎么有BUG呀?我发一个评论没有显示出来,要发第二个评论才能显示出来……
johnnyjian:...
文章分类
收藏
    相册
    交换链接
    DoNews
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Groovy探索之运算符的重载 一收藏

    新一篇: Groovy探索之Delegate模式 二 | 旧一篇: Groovy Tip 17 “*.”操作符

                         Groovy探索之运算符的重载 一
     
     
    运算符最常用的是算术运算符和关系运算符。Groovy语言对这些常用的运算符的重载提供了很好的支持。比如重载加号的方法是“plus”,我们只要在我们自己的类中实现了该方法,就能使用加号对对象进行相加运算。下面举个例子。
    比如,我们有一个类Yuan,用来模拟我们的人民币元。如下:
    class Yuan {
       
        def num
       
        def toString()
        {
           this.num
        }
     
    }
     
    我们可以给该类对象初始化一个金额,表示有多少钱,通过“toString”方法可以获得这个金额数。很简单的一个类。
    现在我有了两个对象,比如说上个月得的钱和这个月得的钱,我当然想把他们加起来,得到一个新的对象。这就需要重载加号运算符了,代码如下:
    class Yuan {
       
        def num
       
        def Yuan plus(Yuan yuan)
        {
           new Yuan(num:(this.num+yuan.num))
        }
       
        def toString()
        {
           this.num
        }
     
    }
     
    可以看到,“plus”方法的实现其实相当的简单,就是初始化一个新的Yuan对象,构造器的参数为两个相加对象金额的和。
    下面,我们来测试我们的重载过的加号运算符:
         
         def y1 = new Yuan(num:29)
         def y2 = new Yuan(num:234)
         
         def y3 = y1+y2
         
         println y3.toString()
       
     
    结果为:
    263
     
    是不是很简单。除了加号运算符对应的方法为“plus”,下面是一些其他常用的运算符对应的方法:
    -                                   minus
    *          multiply
    **(成方)    power
    /           div
    %          mod
     
    关系运算符就显得简单一些。所有的关系运算符,如“==”、“!=”、“>”、“>=”、“<”、“<=”都通过实现“compareTo”方法来重载。
    我们来看看如何重载关系运算符:
    class Yuan implements Comparable{
       
        def num
       
        def toString()
        {
           this.num
        }
       
        defintcompareTo(obj)
        {
           this.num.compareTo(obj.num)
        }
     
     }
     
     
    可以看到,对关系运算符的重载也是十分简单的。值得注意的是,重载关系运算符需要实现“Comparable”接口,而不是简单的实现“compareTo”方法。
    下面来测试这个重载了的关系运算符:
           def y1 = new Yuan(num:98)
           def y2 = new Yuan(num:1)
     
     
           println y1>y2
          
           println y1<y2
          
        println y1==y2
     
     
    结果为:
    true
    false
    false
     
     
    还有很多运算符,如位运算符等都可以被重载,方法也都一样。详细每一个运算符需要实现的方法,可以在使用到的时候查阅资料。

    发表于 @ 2008年07月02日 08:12:04|评论(loading...)|编辑|收藏

    新一篇: Groovy探索之Delegate模式 二 | 旧一篇: Groovy Tip 17 “*.”操作符

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © hivon