Groovy - 方法



Groovy 中的方法可以使用返回型別定義,也可以使用def關鍵字定義。方法可以接收任意數量的引數。定義引數時,不必顯式定義型別。可以新增諸如 public、private 和 protected 之類的修飾符。預設情況下,如果沒有提供可見性修飾符,則該方法為 public。

最簡單的方法型別是沒有引數的方法,如下所示:

def methodName() { 
   //Method code 
}

以下是簡單方法的示例

class Example {
   static def DisplayName() {
      println("This is how methods work in groovy");
      println("This is an example of a simple method");
   } 
	
   static void main(String[] args) {
      DisplayName();
   } 
}

在上面的示例中,DisplayName 是一個簡單的方法,它包含兩個 println 語句,用於將一些文字輸出到控制檯。在我們的靜態 main 方法中,我們只是呼叫 DisplayName 方法。上述方法的輸出將是:

This is how methods work in groovy 
This is an example of a simple method

方法引數

如果方法的行為由一個或多個引數的值決定,則該方法通常更有用。我們可以使用方法引數將值傳遞給被呼叫的方法。請注意,引數名稱必須彼此不同。

最簡單的方法型別是有引數的方法,如下所示:

def methodName(parameter1, parameter2, parameter3) { 
   // Method code goes here 
}

以下是帶引數的簡單方法示例

class Example {
   static void sum(int a,int b) {
      int c = a+b;
      println(c);
   }  
	
   static void main(String[] args) {
      sum(10,5);
   } 
}

在這個例子中,我們建立了一個帶有 2 個引數 a 和 b 的 sum 方法。兩個引數都是 int 型別。然後,我們從 main 方法呼叫 sum 方法並將值傳遞給變數 a 和 b。

上述方法的輸出將是值 15。

預設引數

Groovy 還提供了一種在方法中為引數指定預設值的方法。如果未向方法的引數傳遞值,則使用預設值。如果同時使用非預設引數和預設引數,則應注意預設引數應定義在引數列表的末尾。

以下是帶引數的簡單方法示例:

def someMethod(parameter1, parameter2 = 0, parameter3 = 0) { 
   // Method code goes here 
} 

讓我們看一下之前看到的兩個數字相加的示例,並建立一個具有一個預設引數和另一個非預設引數的方法:

class Example { 
   static void sum(int a,int b = 5) { 
      int c = a+b; 
      println(c); 
   } 
	
   static void main(String[] args) {
      sum(6); 
   } 
}

在這個例子中,我們建立了一個帶有兩個引數 a 和 b 的 sum 方法。兩個引數都是 int 型別。本例與前例的區別在於,在本例中,我們為 b 指定了預設值 5。因此,當我們從 main 方法呼叫 sum 方法時,可以選擇只傳遞一個值 6,該值將分配給 sum 方法中的引數 a。

上述方法的輸出將是值 11。

class Example {
   static void sum(int a,int b = 5) {
      int c = a+b;
      println(c);
   } 
	
   static void main(String[] args) {
      sum(6,6);
   } 
}

我們也可以透過傳遞 2 個值來呼叫 sum 方法,在我們上面的例子中,我們傳遞了 2 個值為 6 的值。第二個值為 6 的值實際上將替換分配給引數 b 的預設值。

上述方法的輸出將是值 12。

方法返回值

方法也可以將值返回給呼叫程式。這在現代程式語言中是必需的,在現代程式語言中,方法執行某種計算,然後將所需的值返回給呼叫方法。

以下是帶返回值的簡單方法示例。

class Example {
   static int sum(int a,int b = 5) {
      int c = a+b;
      return c;
   } 
	
   static void main(String[] args) {
      println(sum(6));
   } 
}

在我們上面的示例中,請注意,這次我們為 sum 方法指定了一個返回型別 int。在方法中,我們使用 return 語句將 sum 值傳送到呼叫 main 程式。由於方法的值現在可用於 main 方法,因此我們使用 println 函式在控制檯中顯示該值。

上述方法的輸出將是值 11。

例項方法

與 Java 語言一樣,方法通常在 Groovy 中的類內部實現。類只不過是建立不同物件的藍圖或模板,它定義了物件的屬性和行為。類物件表現出其類定義的屬性和行為。因此,行為是透過在類內部建立方法來定義的。

我們將在後面的章節中更詳細地介紹類,但以下是類中方法實現的示例。在我們之前的示例中,我們將方法定義為靜態方法,這意味著我們可以直接從類訪問這些方法。下一個方法示例是例項方法,其中方法是透過建立類的物件來訪問的。我們將在後面的章節中介紹類,現在我們將演示如何使用方法。

以下是方法實現示例。

class Example { 
   int x; 
	
   public int getX() { 
      return x; 
   } 
	
   public void setX(int pX) { 
      x = pX; 
   } 
	
   static void main(String[] args) { 
      Example ex = new Example(); 
      ex.setX(100); 
      println(ex.getX()); 
   } 
}

在我們上面的示例中,請注意,這次我們沒有為類方法指定靜態屬性。在我們的 main 函式中,我們實際上是建立了 Example 類的例項,然後呼叫了 'ex' 物件的方法。

上述方法的輸出將是值 100。

區域性引數和外部引數名稱

與 Java 一樣,Groovy 也提供了局部引數和全域性引數的功能。在下面的示例中,lx 是一個區域性引數,其作用域僅限於 getX() 函式內部,而 x 是一個全域性屬性,可以在整個 Example 類內部訪問。如果我們嘗試在 getX() 函式外部訪問變數 lx,我們將收到錯誤。

class Example { 
   static int x = 100; 
	
   public static int getX() { 
      int lx = 200; 
      println(lx); 
      return x; 
   } 
	
   static void main(String[] args) { 
      println(getX()); 
   }  
}

執行上述程式時,我們將得到以下結果。

200 
100

此方法適用於屬性

與 Java 一樣,groovy 可以使用 this 關鍵字訪問其例項成員。下面的示例顯示了當我們使用語句 this.x 時,它如何引用其例項並相應地設定 x 的值。

class Example { 
   int x = 100; 
	
   public int getX() { 
      this.x = 200; 
      return x; 
   } 
	
   static void main(String[] args) {
      Example ex = new Example(); 
      println(ex.getX());
   }
}

執行上述程式時,我們將得到在控制檯中列印的結果 200。

廣告