Сейчас я изучаю Groovy, и я столкнулся с чем-то, чего не понимаю, и надеюсь, что вы сможете пролить свет.Groovy: В чем разница между определением переменной без «def» и с использованием привязки?
В отношении следующего примера:
import groovy.transform.Field
@Field List awe = [1, 2, 3]
def awesum() { awe.sum() }
assert awesum() == 6
Я понимаю, что это анкеровка позволяет мне изменить сферу благоговения переменного от запускаемого на уровне методы сценария на уровень класса сценария ,
Но тогда я думаю о разнице между, определяющей переменных с Защитой или без, например:
def var = "foo"
и
var = "foo"
Насколько я понимаю, разница между этими двумя примерами является разница в объеме. Когда я присваиваю значение переменной без «def» или другого типа, в скрипте Groovy он добавляется к «привязке», глобальным переменным для скрипта. Это означает, что к нему можно получить доступ ко всем функциям скрипта.
Итак, принимая во внимание как «@Field» и определить переменную без использования «DEF» и после этой линии мысли я изменил пример кода для этого:
import groovy.transform.Field
awe = [1, 2, 3]
def awesum() { awe.sum() }
assert awesum() == 6
И это работает.
Так что мой вопрос в том, почему использовать привязку? если вы можете достичь той же цели, задав переменную без «def»?