Bir değişkendeki bir değeri bir yöntemde depolamalıyım ve sonra bu değeri başka bir yöntemde veya kapamada kullanmam gerekiyor. Bu değeri nasıl paylaşabilirim?Groovy'deki global değişkenleri nasıl oluşturur ve bunlara erişirim?
cevap
Sadece sınıf veya senaryo kapsamındaki değişkeni bildirin, ardından yöntemlerin veya kapaklarınızın içinden erişin. Örnek olmasa da, probleminiz için daha spesifik olmak zor. Bununla birlikte, genel değişkenler genellikle kötü biçim kabul edilir.
Değişkeni neden tek bir işlevden döndürmeyin, sonra bir sonrakine aktarın?
Tüm OO dilleri gibi, Groovy'nin kendi başına "global" kavramı yoktur (BASIC, Python veya Perl'den farklı olarak).
aynı değişkeni paylaşmaya gerek çeşitli yöntemler, bir alanı kullanabilirsiniz varsa:
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
istediğiniz, ancak böyle bir şey ne gerek anlamaya olamaz mı? :
def a = { b -> b = 1 }
bValue = a()
println b // prints 1
Şimdi bValue
kapatma a
bir değişkendir b
değerini içerir. Artık bValue
ile bir şey yapabilirsiniz Sorunuzu yanlış anlamışsam bana bildirin
Groovy komut dosyasında kapsam belirleme beklenenden farklı olabilir. Bunun nedeni, Groovy betiğinin kendi başına kodu çalıştıracak bir yönteme sahip bir sınıf olmasıdır, ancak hepsi bu çalışma zamanıdır. Komut dosyasına kapsamlandırılacak bir değişkeni ya tür tanımını atlayarak ya da Groovy 1.8'de @Field ek açıklamasını ekleyerek tanımlayabiliriz.
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.
}
Sanırım sınıf düzeyi değişkenleri hakkında konuşuyorsunuz. Yukarıda da belirtildiği gibi, global değişken/sınıf düzeyi değişkenleri kullanmak iyi bir uygulama değildir.
Gerçekten kullanmak istiyorsanız. Etkilenmeyeceğinden eminseniz ...
Herhangi bir değişkeni yöntemin dışında belirtin. değişken türü üzerinden sınıf düzeyinde
örn:
{
method()
{
a=10
print(a)
}
// def a or int a wont work
a=0
}
burada
Temiz bir yaklaşım olmayabilir, ama işe yarıyor;) teşekkürler. –
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()
iamglobal değişken yeniden kullanılabilir fonk sonra ve kullandığı global bir değişkendir FUNC2 için
- 1. CUDA global değişkenleri nasıl sıfırlanır
- 2. VScode global değişkenleri tanımlayamıyor
- 3. SASS global değişkenleri parsiyellere geçilmiyor
- 4. Ember CLI uygulamasında Ember global 'App' değişkenine nasıl erişirim?
- 5. SetWindowsHookEx yerel bir kanca oluşturur. Nasıl global hale getirilir?
- 6. Oyun çerçevesinde scala şablonunda yerel değişkenleri nasıl bildirir ve bunlara erişir?
- 7. CSS sonraki değişkenleri global olarak kullanma
- 8. Web.xml'deki değişkenleri tanımlamak ve başlatmak için en iyi yöntemler ve daha sonra bunlara Java kodundan erişme
- 9. Tüm global değişkenleri Node.js içinde listele
- 10. Hedef C - Global statik değişkenleri nerede karşılarsınız?
- 11. Adaptörden ListView'e nasıl erişirim?
- 12. ng içeriğine nasıl erişirim?
- 13. Perl sınıfında bir dosya kitaplığını nasıl kaydedebilir ve bunlara erişebilirim?
- 14. jQuery'de değişkenleri ve işlevleri silme
- 15. Görsel stüdyonun izleme pencerelerindeki (C++ için) tüm global değişkenleri nasıl listeleyebilir ve izleyebilirim?
- 16. Python "global" (modül) değişkenleri yerel olarak mı işlenir?
- 17. HBase tablosuna Hive & vice-versa'da nasıl erişirim?
- 18. Tüm global değişkenleri bir defada php işlevinde kullanın
- 19. Genel Meteor değişkenlerini şablonlara nasıl aktarabilir ve bunlara erişebilir ve kullanabilirim?
- 20. Android telefonlarda kameraya nasıl erişirim?
- 21. ModelState'e bir ActionFilter'dan nasıl erişirim?
- 22. Meteor'da process.env dosyasına nasıl erişirim?
- 23. Windows'ta özel dizinlere nasıl erişirim?
- 24. Yerel java'ya freemarker'da nasıl erişirim?
- 25. Request nesnesine RazorViewEngine'den nasıl erişirim?
- 26. Resimlere nasıl erişirim? Bildirim türü
- 27. Scala belgelerine repl'den nasıl erişirim?
- 28. V8 ayrıştırma ağacına nasıl erişirim?
- 29. Pycharm - "Saatler" bölmesine nasıl erişirim?
- 30. Perl'deki karma dizisine nasıl erişirim?
Değeri olan değişkeni kullanmak istersem ne olur? bir kapatma içinde ned? E.g: betiğin başında def = null var. Şimdi bir kapanış, a = 'bazı dizgenin' değeri atanır. Bu yeni değerin diğer tüm kapanışlar için erişilebilir olmasını istiyorum. teşekkürler – OK999
Gerçekten mi? –
'u denemek ve düzeltmek zorunda olduğunuzda kendinizden nefret edersiniz İstenilen hesaplanan değeri döndüren ve Groovy 1'de yeni şeyler kullanmak için gereken – OK999