Мне нужно сохранить значение в переменной в одном методе, а затем мне нужно использовать это значение из этой переменной в другом методе или закрытии. Как я могу поделиться этой ценностью?
128
В сценарии Groovy область видимости может отличаться от ожидаемой. Это потому, что сценарий Groovy сам по себе является классом с методом, который будет запускать код, но все это выполняется во время выполнения. Мы можем определить переменную, которая будет ограничена сценарием, либо опуская определение типа, либо в Groovy 1.8 мы можем добавить аннотацию @Field.
import groovy.transform.Field
var1 = 'var1'
@Field String var2 = 'var2'
def var3 = 'var3'
void printVars() {
println var1
println var2
println var3 // This won't work, because not in script scope.
}
class Globals
ниже решение - способ обойти это.var1 = 'var1'
метод в конвейере Jenkins с использованием Groovy, и он не сработал. Пришлось использовать@Field var1 = 'var1'
источник
здесь iamglobal переменная - это глобальная переменная, используемая func, а затем снова доступная для func2
если вы объявляете переменную с помощью def, она будет локальной, если вы не используете def ее глобальный
источник
Как и все объектно-ориентированные языки, Groovy не имеет самого по себе понятия «глобальный» (в отличие, скажем, от BASIC, Python или Perl).
Если у вас есть несколько методов, которые должны использовать одну и ту же переменную, используйте поле:
источник
Просто объявите переменную в области класса или скрипта, а затем получите к ней доступ из ваших методов или закрытий. Однако без примера трудно быть более конкретным для вашей конкретной проблемы.
Однако глобальные переменные обычно считаются дурным тоном.
Почему бы не вернуть переменную из одной функции, а затем передать ее в следующую?
источник
Я думаю, вы говорите о переменных уровня класса. Как упоминалось выше, использование глобальных переменных / переменных уровня класса не является хорошей практикой.
Если вы действительно хотите его использовать. и если вы уверены, что удара не будет ...
Объявите любую переменную вне метода. на уровне класса без типа переменной
например:
источник
источник
Не могли сообразить, что вы хотите, а вам нужно что-то подобное? :
Теперь
bValue
содержит значениеb
переменной в замыканииa
. Теперь вы можете делать все, что угодно, с помощьюbValue
Дайте мне знать, если я неправильно понял ваш вопросисточник