程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Groovy >> Groovy Tip 32 方法的參數 一

Groovy Tip 32 方法的參數 一

編輯:Groovy

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"為非默認值的情 況。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved