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