Groovy - Опции
Groovy - это язык с «необязательной» типизацией, и это различие важно при понимании основ языка. По сравнению с Java, который является «строго» типизированным языком, в котором компилятор знает все типы для каждой переменной и может понимать и соблюдать контракты во время компиляции. Это означает, что вызовы методов могут быть определены во время компиляции.
При написании кода на Groovy разработчикам предоставляется возможность указать тип или нет. Это может предложить некоторую простоту в реализации и при правильном использовании может обеспечить надежное и динамичное обслуживание вашего приложения.
В Groovy необязательная типизация выполняется с помощью ключевого слова def. Ниже приведен пример использованияdef метод -
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);
}
}
Из приведенной выше программы мы видим, что мы не объявили отдельные переменные как Integer, float, double или string, даже если они содержат эти типы значений.
Когда мы запустим вышеуказанную программу, мы получим следующий результат -
100
100.10
100.101
HelloWorld
Необязательная типизация может быть мощной утилитой во время разработки, но может привести к проблемам с ремонтопригодностью на более поздних этапах разработки, когда код становится слишком обширным и сложным.
Чтобы понять, как можно использовать необязательную типизацию в Groovy, не превращая кодовую базу в неразбериху, лучше всего использовать в своих приложениях философию «утиной печати».
Если мы перепишем приведенный выше код, используя утиную печать, он будет выглядеть так, как показано ниже. Именам переменных присваиваются имена, которые чаще всего напоминают тип, который они представляют, что делает код более понятным.
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);
}
}