Tôi cần phải lưu trữ một giá trị trong một biến trong một phương pháp và sau đó tôi cần phải sử dụng giá trị đó từ biến đó trong một phương pháp khác hoặc đóng. Làm thế nào tôi có thể chia sẻ giá trị này?Làm cách nào để tạo và truy cập các biến toàn cầu trong Groovy?
Trả lời
Chỉ cần khai báo biến ở lớp hoặc phạm vi tập lệnh, sau đó truy cập biến từ bên trong phương thức hoặc đóng của bạn. Nếu không có một ví dụ, thật khó để cụ thể hơn cho vấn đề cụ thể của bạn mặc dù.
Tuy nhiên, biến toàn cầu thường được coi là biểu mẫu không hợp lệ.
Tại sao không trả lại biến từ một hàm, sau đó chuyển biến đó sang hàm khác?
Giống như tất cả các ngôn ngữ OO, Groovy không có khái niệm "toàn cầu" một mình (không giống như, BASIC, Python hoặc Perl).
Nếu bạn đã một số phương pháp mà cần phải chia sẻ cùng một biến, sử dụng một lĩnh vực:
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
Không thể tìm ra những gì bạn muốn, nhưng bạn cần một cái gì đó như thế này? :
def a = { b -> b = 1 }
bValue = a()
println b // prints 1
Bây giờ bValue
chứa giá trị của b
mà là một biến trong việc đóng cửa a
. Bây giờ bạn có thể làm bất cứ điều gì với bValue
Hãy cho tôi biết nếu tôi đã hiểu sai câu hỏi của bạn
Trong tập lệnh Groovy, phạm vi có thể khác với mong đợi. Đó là bởi vì một kịch bản Groovy trong chính nó là một lớp với một phương thức sẽ chạy mã, nhưng đó là tất cả thời gian chạy được thực hiện. Chúng ta có thể định nghĩa một biến được scoped cho kịch bản bằng cách bỏ qua định nghĩa kiểu hoặc trong Groovy 1.8, chúng ta có thể thêm chú thích @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.
}
Tôi nghĩ bạn đang nói về các biến cấp lớp. Như đã đề cập ở trên, việc sử dụng biến toàn cục/biến cấp lớp không phải là một thực hành tốt.
Nếu bạn thực sự muốn sử dụng nó. và nếu bạn chắc chắn rằng sẽ không có tác động ...
Khai báo bất kỳ phương thức nào khác ngoài phương thức. ở cấp lớp với dung ra kiểu biến
ví dụ:
{
method()
{
a=10
print(a)
}
// def a or int a wont work
a=0
}
Nó có thể không phải là một cách tiếp cận sạch sẽ, nhưng nó hoạt động;) cảm ơn. –
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()
đây iamglobal biến là một biến toàn cầu được sử dụng bởi func và sau đó một lần nữa sẵn sàng Func2
- 1. Hằng số toàn cầu trong Groovy
- 2. Làm thế nào để tạo biến toàn cầu trong prolog
- 3. Truy cập toàn cầu trong Java
- 4. Truy cập toàn cầu so với biến cục bộ
- 5. Làm cách nào để vô hiệu hóa việc tạo ra các trình truy cập Groovy?
- 6. Truy cập biến toàn cầu từ bên trong một lớp
- 7. Làm thế nào để tránh các biến toàn cầu
- 8. Làm thế nào để truy cập một biến toàn cầu Python từ C?
- 9. Biến toàn cầu và MPI
- 10. Truy cập C biến toàn cầu 'errno' từ C#
- 11. Làm thế nào để truy cập toàn cầu vào các loại enum trong C#?
- 12. Truy cập các biến toàn cầu từ một hàm trong mô-đun đã nhập
- 13. Làm cách nào để truy cập bộ định tuyến toàn cầu trong js đường trục?
- 14. Java namespace toàn cầu truy cập
- 15. Truy cập các biến toàn cầu trong một tập lệnh PHP riêng biệt?
- 16. Làm thế nào để tạo các biến toàn cầu có thể truy cập trong tất cả các khung nhìn bằng Express/Node.JS?
- 17. Biến toàn cầu và đơn vị đọc
- 18. Làm cách nào để lưu các biến toàn cầu trong quá trình phát triển iOS?
- 19. Biến toàn cầu và biến tĩnh trong PHP
- 20. Biến toàn cầu trong Qt, làm thế nào?
- 21. Biến Truy cập rõ cho Jenkins Groovy Plugin Script
- 22. Làm thế nào để tạo ra một mảng toàn cầu?
- 23. Làm cách nào để truyền các biến sang layout.phtml trên toàn cầu trong ZF2?
- 24. biến toàn cầu trong requireJS
- 25. Làm cách nào để truy cập biến được xác định trong tệp Ruby mà tôi yêu cầu trong IRB?
- 26. Biến Python toàn cầu không cập nhật
- 27. Đặt các Biến Toàn cầu trong VBA
- 28. làm thế nào để thiết lập các biến const toàn cầu trong python
- 29. Cách tạo biến toàn cục trong Erlang
- 30. Truy cập tài nguyên toàn cầu trong điều khiển asp.net
nếu tôi muốn sử dụng biến có giá trị đã được assig ned trong một đóng cửa? Ví dụ: tôi có def a = null ở đầu tập lệnh. Bây giờ bên trong một đóng, giá trị của a = 'một số chuỗi', được gán. Tôi muốn giá trị mới này có thể truy cập được đối với tất cả các bao đóng khác. cảm ơn – OK999
Thật sao? Bạn sẽ ghét bản thân khi bạn phải cố gắng sửa chữa nó –
Tôi đã kết thúc việc tạo một kết thúc trả về giá trị được tính toán mong muốn và sử dụng giá trị cần thiết – OK999