Preciso armazenar um valor em uma variável em um método e, em seguida, preciso usar esse valor dessa variável em outro método ou fechamento. Como posso compartilhar esse valor?
128
Em um script Groovy, o escopo pode ser diferente do esperado. Isso ocorre porque um script Groovy em si é uma classe com um método que executará o código, mas isso é tudo feito em tempo de execução. Podemos definir uma variável com escopo definido no script, omitindo a definição de tipo ou no Groovy 1.8, podemos adicionar a anotação @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
solução abaixo é uma maneira de contornar isso.var1 = 'var1'
método em um pipeline Jenkins usando Groovy e não funcionou. Eu tive que usar@Field var1 = 'var1'
fonte
aqui variável iamglobal é uma variável global usada por func e, em seguida, novamente disponível para func2
se você declarar variável com def, ela será local; se você não usar def, seu global
fonte
Como todas as linguagens OO, o Groovy não tem conceito de "global" por si só (ao contrário, digamos, BASIC, Python ou Perl).
Se você possui vários métodos que precisam compartilhar a mesma variável, use um campo:
fonte
Apenas declare a variável no escopo de classe ou script e acesse-a de dentro de seus métodos ou fechamentos. Sem um exemplo, é difícil ser mais específico para o seu problema específico.
No entanto, variáveis globais são geralmente consideradas más formas.
Por que não retornar a variável de uma função e passá-la para a próxima?
fonte
Eu acho que você está falando sobre variáveis em nível de classe. Como mencionado acima, o uso de variáveis globais / variáveis em nível de classe não é uma boa prática.
Se você realmente quer usá-lo. e se tiver certeza de que não haverá impacto ...
Declare qualquer variável fora do método. no nível da classe sem o tipo de variável
por exemplo:
fonte
fonte
Não foi possível descobrir o que você deseja, mas precisa de algo assim? :
Agora
bValue
contém o valor deb
que é uma variável no fechamentoa
. Agora você pode fazer qualquer coisa combValue
Deixe-me saber se eu entendi sua perguntafonte