Groovy Tip 32 方法的參數 一

                        Groovy Tip 32 方法的參數 一

 

 

Groovy語言在方法的輸入參數方面做了很多有益的工作,這些工作有些能提高代碼的閱讀性,有些能提供編碼的方便和敏捷。在前面的文字中,我們已經陸續的介紹過一些,如《Groovy探索之Map與DSL》。在這個系列中,我們再把一些前面沒有提及的一一介紹過來。

首先,是關於調用方法時的括號的使用。

在Groovy語言的編碼中,我們可能已經很熟練的使用下面的語句:

 

      println 'hello,world'

 

我們都知道,上面的語句相當於下面的語句:

 

      println('hello,world')

 

這就是說明,在Groovy語言中,我們可以省略調用方法時的那對括號,這樣做的好處,第一是減少了我們輸入括號的鍵盤敲擊,提高了編碼的快捷性;第二是提高了的代碼的閱讀性,這也是DSL的一個方面。比如下面的語句:

 

      def word = 'Are you ok?'

            

      println word

 

就比"println(word)"的閱讀性好。

但是,值得注意的是,方法調用中的括號也不是可以隨意省略的。有些時候,省略會帶來編譯錯誤。如下面的換行語句:

 

      println()

 

就不能省略掉括號,寫成如下的樣子:

 

      println

 

除此之外,下面的語句也是不能正常編譯的:

     

      def list = [1,2,3,4]

 

      def list2 = list.subList 0,1

 

但下面的語句卻又是可以編譯的:

     

      def list1 = list.subList(0,1)

     

      list.subList 0,1

 

 

總之,當你發現省略了方法調用中的括號時,出現編譯錯誤,你就應該把括號加上。

 

第二,Groovy語言中,關於方法參數的默認值的處理。

比如,我們有如下的一個方法:

 

    def static add(i,j)

    {

       i+j

    }

 

現在的要求是,在這個方法中,如果我們只輸入參數"i",那麼表示參數"j"爲默認值1。如果我們只輸入參數"j",那麼表示參數"i"爲默認值0。如果兩個參數都不輸入,那麼表示參數"i"爲默認值0,參數"j"爲默認值1。

要達到上面的要求,在Java語言中,我們必須再寫如下的三個方法:

 

    def static add0(j)

    {

       add(0,j)  

    }

   

    def static add1(i)

    {

       add(i,1)  

    }

   

    def static add()

    {

       add(0,1)  

    }

 

這樣,如果我們想使用參數"i"的默認值,那麼就調用方法"add0";如果想使用參數"j"的默認值,那麼就調用方法"add1";如果想調用兩個默認值,就調用最後一個方法。

所以,在Java語言中,我們要達到上面的要求,我們必須寫四個方法。

 

在Groovy語言中,我們將不用那麼麻煩了。在Groovy語言中,我們引入了參數的默認值的概念,使得我們完成上面的要求只需要一個方法就可以實現上面的多個方法。如下:

   

    def static add(i=0,j=1)

    {

       i+j

    }

 

 

有了上面的方法,我們就可以進行如下的調用:

     

      println add()

     

      println add(1)

     

      println add(1,2)

 

 

第一個方法調用沒有輸入任何參數,表示使用兩個參數的默認值;第二個方法調用只有一個輸入參數,表示使用了參數"j"的默認值;第三個方法調用有兩個輸入參數,則不適用任何一個參數的默認值。

上面代碼的運行結果爲:

1

2

3

 

唯一有一點點遺憾就是沒有實現參數"i"爲默認值,而參數"j"爲非默認值的情況。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章