Necesito almacenar un valor en una variable en un método y luego necesito usar ese valor de esa variable en otro método o cierre. ¿Cómo puedo compartir este valor?
128
En un script Groovy, el alcance puede ser diferente de lo esperado. Esto se debe a que un script Groovy en sí mismo es una clase con un método que ejecutará el código, pero todo se hace en tiempo de ejecución. Podemos definir una variable para sumar al script omitiendo la definición de tipo o en Groovy 1.8 podemos agregar la anotación @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
solución a continuación es una forma de evitar eso.var1 = 'var1'
método en una tubería Jenkins usando Groovy y no funcionó. Tuve que usar@Field var1 = 'var1'
fuente
aquí la variable iamglobal es una variable global utilizada por func y luego nuevamente disponible para func2
si declaras variable con def , será local, si no usas def es global
fuente
Al igual que todos los lenguajes OO, Groovy no tiene un concepto de "global" en sí mismo (a diferencia de, por ejemplo, BASIC, Python o Perl).
Si tiene varios métodos que necesitan compartir la misma variable, use un campo:
fuente
Simplemente declare la variable en el alcance de la clase o script, luego acceda desde sus métodos o cierres. Sin un ejemplo, es difícil ser más específico para su problema particular.
Sin embargo, las variables globales generalmente se consideran de mala forma.
¿Por qué no devolver la variable de una función y luego pasarla a la siguiente?
fuente
Creo que estás hablando de variables de nivel de clase. Como se mencionó anteriormente, el uso de variables globales / variables de nivel de clase no es una buena práctica.
Si realmente quieres usarlo. y si está seguro de que no habrá impacto ...
Declare cualquier variable fuera del método. a nivel de clase sin el tipo de variable
p.ej:
fuente
fuente
¿No pudo encontrar lo que quiere, pero necesita algo como esto? :
Ahora
bValue
contiene el valor deb
que es una variable en el cierrea
. Ahora puedes hacer cualquier cosa conbValue
Avísame si he entendido mal tu preguntafuente