Groovy - opcionais

Groovy é uma linguagem tipada “opcionalmente”, e essa distinção é importante para a compreensão dos fundamentos da linguagem. Quando comparado ao Java, que é uma linguagem de tipagem “forte”, em que o compilador conhece todos os tipos de cada variável e pode entender e honrar contratos em tempo de compilação. Isso significa que as chamadas de método podem ser determinadas em tempo de compilação.

Ao escrever código em Groovy, os desenvolvedores têm a flexibilidade de fornecer um tipo ou não. Isso pode oferecer alguma simplicidade na implementação e, quando aproveitado de maneira adequada, pode atender ao seu aplicativo de maneira robusta e dinâmica.

No Groovy, a digitação opcional é feita por meio da palavra-chave 'def'. A seguir está um exemplo de uso dodef método -

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

No programa acima, podemos ver que não declaramos as variáveis ​​individuais como Integer, float, double ou string, embora contenham esses tipos de valores.

Quando executamos o programa acima, obteremos o seguinte resultado -

100 
100.10 
100.101
HelloWorld

A digitação opcional pode ser um utilitário poderoso durante o desenvolvimento, mas pode levar a problemas de manutenção durante os estágios posteriores de desenvolvimento, quando o código se torna muito vasto e complexo.

Para entender como você pode utilizar a digitação opcional no Groovy sem colocar sua base de código em uma bagunça insustentável, é melhor abraçar a filosofia de “digitação de pato” em seus aplicativos.

Se reescrevermos o código acima usando digitação duck, ele se parecerá com o dado abaixo. Os nomes das variáveis ​​recebem nomes que se assemelham mais freqüentemente do que o tipo que representam, o que torna o código mais compreensível.

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