Potrzebuję przechowywać wartość w zmiennej w jednej metodzie, a następnie potrzebuję użyć tej wartości z tej zmiennej w innej metodzie lub zamknięciu. Jak mogę udostępnić tę wartość?Jak utworzyć i uzyskać dostęp do zmiennych globalnych w Groovy?
Odpowiedz
Po prostu zadeklaruj zmienną w klasie lub zakresie skryptu, a następnie uzyskaj dostęp do niej z poziomu swoich metod lub zamknięć. Bez przykładu trudno jest być bardziej konkretnym dla konkretnego problemu.
Jednak zmienne globalne są generalnie uważane za złe.
Dlaczego nie zwrócić zmiennej z jednej funkcji, a następnie przekazać ją do następnej?
Podobnie jak wszystkie języki obce, Groovy nie ma pojęcia "globalnego" samo w sobie (w przeciwieństwie do, powiedzmy, BASIC, Python lub Perl).
Jeśli masz kilka metod, które muszą dzielić tę samą zmienną, użyj pola:
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
nie mógł dowiedzieć się, co chcesz, ale trzeba coś takiego? :
def a = { b -> b = 1 }
bValue = a()
println b // prints 1
Teraz bValue
zawiera wartość b
, która jest zmienna w zamknięciu a
. Teraz możesz zrobić wszystko dzięki bValue
Daj mi znać, jeśli źle zrozumiałem twoje pytanie:
W skrypcie Groovy zakres może być inny niż oczekiwano. Dzieje się tak dlatego, że sam skrypt Groovy jest klasą z metodą, która uruchomi kod, ale to wszystko jest zrobione. Możemy zdefiniować zmienną, która ma mieć zasięg do skryptu, pomijając definicję typu lub w Groovy 1.8 możemy dodać adnotację @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.
}
Myślę, że mówisz o zmiennych na poziomie klasy. Jak wspomniano powyżej, używanie zmiennych o zmiennych globalnych/klasach nie jest dobrą praktyką.
Jeśli naprawdę chcesz z niego korzystać. i jeśli masz pewność, że nie będzie wpływu ...
Deklaracja dowolnej zmiennej obok metody. na poziomie klasy z zewnątrz typu zmiennej
np
{
method()
{
a=10
print(a)
}
// def a or int a wont work
a=0
}
To może nie być czyste podejście, ale działa;) dzięki. –
def sum = 0
// This method stores a value in a global variable.
def add =
{
input1 , input2 ->
sum = input1 + input2;
}
// This method uses stored value.
def multiplySum =
{
input1 ->
return sum*input1;
}
add(1,2);
multiplySum(10);
def iamnotglobal=100 // This will not be accessible inside the function
iamglobal=200 // this is global and will be even available inside the
def func()
{
log.info "My value is 200. Here you see " + iamglobal
iamglobal=400
//log.info "if you uncomment me you will get error. Since iamnotglobal cant be printed here " + iamnotglobal
}
def func2()
{
log.info "My value was changed inside func to 400 . Here it is = " + iamglobal
}
func()
func2()
tutaj iamglobal zmienna jest zmienną globalną wykorzystywane przez func a następnie ponownie do dyspozycji func2
- 1. AngularJs: Jak uzyskać dostęp do zmiennych globalnych poza kontrolerem?
- 2. groovy: Jak uzyskać dostęp do pliku właściwości?
- 3. Jak uzyskać dostęp do zmiennych globalnych w szablonie Meteor bez pomocy pomocnika?
- 4. R shiny: jak zapisać dane wejściowe na serwerze lub uzyskać dostęp do globalnych zmiennych wejściowych?
- 5. Groovy: Jak uzyskać dostęp do wartości już ustawionych w DataSource
- 6. Definiowanie zmiennych globalnych w MPI
- 7. Zakres Groovy - jak uzyskać dostęp do zmiennej skryptowej w metodzie
- 8. Ustawianie zmiennych globalnych w VBA
- 9. Zestaw globalnych zmiennych kątomierza
- 10. Częstotliwość zmiennych globalnych w python?
- 11. Jak uzyskać dostęp do zmiennych członkowskich w klasie ciągów STL?
- 12. Jak nie używać zmiennych globalnych w c
- 13. Dezorientacja zmiennych globalnych w pytonie
- 14. Jak uzyskać dostęp do zmiennych laravel .env w javascript?
- 15. Jaki jest najlepszy sposób tworzenia zmiennych globalnych w CakePHP?
- 16. Jak uzyskać dostęp do zmiennych javascript w JSP?
- 17. Jak uzyskać dostęp do zmiennych środowiskowych w Vala?
- 18. Jak uzyskać dostęp do zmiennych Sass w komponencie Vue?
- 19. Uzyskiwanie dostępu do zmiennych globalnych z funkcji importowanego modułu
- 20. Jak zmierzyć całkowity rozmiar moich zmiennych globalnych?
- 21. Używanie zmiennych globalnych między plikami?
- 22. Jak uzyskać dostęp do zmiennych klasowych z modułu?
- 23. Jak uzyskać dostęp do zmiennych klasy bez własnego?
- 24. Dostęp do zmiennych statycznych
- 25. Symfony2 Dostęp do zmiennych trasy
- 26. prawidłowe stosowanie zmiennych globalnych W Pythonie 3
- 27. deklarowanie zmiennych globalnych w yii i używanie ich w kontrolerze
- 28. sposób ustawiania globalnych zmiennych stałych w pythonie
- 29. Lista wszystkich zmiennych globalnych w pliku Node.js
- 30. Czy sterownik sieciowy Selenium może mieć dostęp do globalnych zmiennych javascript?
co jeśli chcę użyć zmiennej, której wartość została przypisana ned w zamknięciu? E.g: mam def = null na początku skryptu. Teraz wewnątrz zamknięcia jest przypisana wartość a = "jakiś ciąg". Chcę, aby ta nowa wartość była dostępna dla wszystkich innych zamknięć. dzięki – OK999
Naprawdę? Nienawidzisz siebie, kiedy musisz spróbować to naprawić. –
Zakończyłem tworzenie zamknięcia, które zwraca żądaną wyliczoną wartość i używa tam, gdzie potrzebne jest – OK999