Zaujimalo by ma naco sluzi to def pri definicii premennych resp atributov. Este v minulom dieli serialu bol takyto priklad
// dynamicky
year = 2007
// dynamicky s def
def year = 2007
Aky je tom rozdiel ?
"def" na definiciu metody to ano, ale naco je to aj pri atribute v tomto priklade:
class Product{
// promenne objektu
private def price
def vendor
....
No to "def vyzera na definiciu premennych naozaj dost prebytocne. Mato byt asi akysi syntakticky-cukor alebo syntakticky-balast ? :-)))
Ak pouzijem def mozem na 1 riadok nadefinovat viac premennych oddelenych ciarkov
def b = 'hello', c = 'World'
print "$b, $c\n"
bez def-u to nejde, toto
b = 'hello', c = 'World'
vyhodi chybu
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed,
D:\Groovy\example_02.groovy: 1: unexpected token: , @ line 1, column 12.
b = 'hello', c = 'World'
^
1 error
ale ked sa namiesto ciarky pouzije bodkociarka, tak to ide takto
b = 'hello'; c = 'World'
print "$b, $c\n"
"ale ked sa namiesto ciarky pouzije bodkociarka, tak to ide takto
b = 'hello'; c = 'World'
print "$b, $c\n" "
to uz pak ztraci to kouzlo operatoru carka:)
Pouziti def zalezi na tom, jestli deklarujete promenou uvnitr tridy nebo ve skriptu. V jednom pripade je to nepovinne, ale nepamatuji se u ktereho, ale je to z duvodu, ze syntakticky analyzator to nebyl v jednom z tech pripadu schopen rozpoznat ci co.
Ve skripte (groovy.lang.Script) se rozlisuji dve veci: promenne (variables) a vlastnosti (properties). Promenne jsou unikatni pouze pro skript - tridy je nemaji. Pouzitim def se definuje vlastnost bez nej je to promenna.