Groovy - opcje

Groovy jest językiem typu „opcjonalnie” i to rozróżnienie jest ważne przy zrozumieniu podstaw języka. W porównaniu z Javą, która jest językiem „silnie” typizowanym, w którym kompilator zna wszystkie typy dla każdej zmiennej i może rozumieć i honorować kontrakty w czasie kompilacji. Oznacza to, że wywołania metod można określić w czasie kompilacji.

Pisząc kod w Groovy, programiści mają możliwość zapewnienia typu lub nie. Może to zapewnić pewną prostotę implementacji, a przy odpowiednim wykorzystaniu może zapewnić niezawodną i dynamiczną obsługę aplikacji.

W Groovy opcjonalne wpisywanie odbywa się za pomocą słowa kluczowego „def”. Poniżej znajduje się przykład użyciadef metoda -

class Example { 
   static void main(String[] args) { 
      // Example of an Integer using def 
      def a = 100; 
      println(a); 
		
      // Example of an float using def 
      def b = 100.10; 
      println(b); 
		
      // Example of an Double using def 
      def c = 100.101; 
      println(c);
		
      // Example of an String using def 
      def d = "HelloWorld"; 
      println(d); 
   } 
}

Z powyższego programu widać, że nie zadeklarowaliśmy poszczególnych zmiennych jako liczby całkowite, zmiennoprzecinkowe, podwójne lub łańcuchowe, mimo że zawierają one te typy wartości.

Po uruchomieniu powyższego programu otrzymamy następujący wynik -

100 
100.10 
100.101
HelloWorld

Opcjonalne pisanie na maszynie może być potężnym narzędziem podczas programowania, ale może prowadzić do problemów z utrzymywalnością na późniejszych etapach rozwoju, gdy kod staje się zbyt rozległy i złożony.

Aby zrozumieć, w jaki sposób możesz wykorzystać opcjonalne pisanie w Groovy bez wprowadzania w kod źródłowy niepotrzebnego bałaganu, najlepiej jest przyjąć w swoich aplikacjach filozofię „kaczego pisania”.

Jeśli ponownie napiszemy powyższy kod za pomocą pisania kaczkami, będzie wyglądał jak ten podany poniżej. Nazwy zmiennych mają nadane nazwy, które najczęściej przypominają typ, który reprezentują, co czyni kod bardziej zrozumiałym.

class Example { 
   static void main(String[] args) { 
      // Example of an Integer using def 
      def aint = 100; 
      println(aint); 
		
      // Example of an float using def 
      def bfloat = 100.10; 
      println(bfloat); 
		
      // Example of an Double using def 
      def cDouble = 100.101; 
      println(cDouble);
		
      // Example of an String using def 
      def dString = "HelloWorld"; 
      println(dString); 
   } 
}