Groovy 方法

2022-07-21 11:20 更新

Groovy 中的方法是使用返回類型或使用 def 關(guān)鍵字定義的。方法可以接收任意數(shù)量的參數(shù)。定義參數(shù)時,不必顯式定義類型。可以添加修飾符,如 public,private 和 protected。默認(rèn)情況下,如果未提供可見性修飾符,則該方法為 public。

最簡單的方法是沒有參數(shù)的方法,如下所示:

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 語句組成,用于向控制臺輸出一些文本。在我們的靜態(tài) main 方法中,我們只是調(diào)用 DisplayName 方法。上述方法的輸出將是 -

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

方法參數(shù)

如果一個方法的行為由一個或多個參數(shù)的值確定,則它通常是有用的。我們可以使用方法參數(shù)將值傳遞給被調(diào)用的方法。請注意,參數(shù)名稱必須彼此不同。

使用參數(shù)的最簡單的方法類型,如下所示 ?

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

以下是使用參數(shù)的簡單方法的示例

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

在這個例子中,我們創(chuàng)建一個帶有 2 個參數(shù) a 和 b 的 sum 方法。兩個參數(shù)都是 int 類型。然后我們從我們的 main 方法中調(diào)用 sum 方法,并將值傳遞給變量 a 和 b。

然后我們從我們的 main 方法中調(diào)用 sum 方法,并將值傳遞給變量 a 和 b。



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

默認(rèn)參數(shù)

Groovy 中還有一個規(guī)定來指定方法中的參數(shù)的默認(rèn)值。 如果沒有值傳遞給參數(shù)的方法,則使用缺省值。 如果使用非默認(rèn)和默認(rèn)參數(shù),則必須注意,默認(rèn)參數(shù)應(yīng)在參數(shù)列表的末尾定義。

以下是使用參數(shù)的簡單方法的示例 -

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

讓我們看看我們之前看到的添加兩個數(shù)字的相同示例,并創(chuàng)建一個具有一個默認(rèn)和另一個非默認(rèn)參數(shù)的方法 -

class Example { 
   static void sum(int a,int b = 5) { 
      int c = a+b; 
      println(c); 
   } 
	
   static void main(String[] args) {
      sum(6); 
   } 
}
在這個例子中,我們創(chuàng)建一個具有兩個參數(shù) a 和 b 的 sum 方法。兩個參數(shù)都是 int 類型。此示例和上一個示例的區(qū)別在于,在這種情況下,我們將 b 的默認(rèn)值指定為5。
因此,當(dāng)我們從 main 方法中調(diào)用 sum 方法時,我們可以選擇只傳遞一個值為6的值,并將其分配給 sum 方法中的參數(shù) 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 個值來調(diào)用 sum 方法,在上面的例子中,我們傳遞 2 個值 6 第二個值 6 實際上將替換分配給參數(shù) b 的默認(rèn)值。



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

方法返回值

方法也可以將值返回到調(diào)用程序。 這在現(xiàn)在編程語言中是必需的,其中方法執(zhí)行某種計算,然后將所需值返回到調(diào)用方法。



下面是一個帶有返回值的簡單方法的例子。

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

在我們上面的例子中,注意這次我們?yōu)槲覀兊姆椒?sum 指定一個類型為 int 的返回類型。 在方法中,我們使用 return 語句將 sum 值發(fā)送到調(diào)用主程序。 由于方法的值現(xiàn)在可用于 main 方法,因此我們使用 println 函數(shù)在控制臺中顯示該值。

在前面的例子中,我們將我們的方法定義為靜態(tài)方法,這意味著我們可以直接從類中訪問這些方法。方法的下一個示例是實例方法,其中通過創(chuàng)建類的對象來訪問方法。我們將在后面的章節(jié)中看到類,現(xiàn)在我們將演示如何使用方法。

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

實例方法

方法通常在 Groovy 中的類中實現(xiàn),就像 Java 語言一樣。類只是一個藍(lán)圖或模板,用于創(chuàng)建定義其屬性和行為的不同對象。類對象顯示由其類定義的屬性和行為。因此,通過在類中創(chuàng)建方法來定義行為。

我們將在后面的章節(jié)中更詳細(xì)地看到類,下面是類中方法實現(xiàn)的例子。

以下是如何實現(xiàn)方法的示例。

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()); 
   } 
}

在我們上面的例子中,這次我們沒有為類方法指定靜態(tài)屬性。在我們的 main 函數(shù)中,我們實際上創(chuàng)建了一個 Example 類的實例,然后調(diào)用 'ex' 對象的方法。



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

本地和外部參數(shù)名稱

Groovy 提供的設(shè)施就像java一樣具有本地和全局參數(shù)。在下面的示例中,lx 是一個局部參數(shù),它只具有 getX() 函數(shù)內(nèi)的作用域,x 是一個全局屬性,可以在整個 Example 類中訪問。如果我們嘗試訪問 getX() 函數(shù)之外的變量 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() 
   }  
}

當(dāng)我們運行上面的程序,我們會得到以下結(jié)果。

200 
100

方法屬性

就像在 Java 中一樣,groovy 可以使用 this 關(guān)鍵字訪問它的實例成員。以下示例顯示了當(dāng)我們使用語句 this.x 時,它引用其實例并相應(yīng)地設(shè)置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());
   }
}

當(dāng)我們運行上面的程序,我們將得到 200 的結(jié)果打印在控制臺上。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號