Có thể khai báo biến tĩnh trong Tcl không?
Tôi sử dụng một chức năng nhất định để nắm bắt các lỗi lệnh không xác định và tôi muốn in thông báo lỗi về lần xuất hiện đầu tiên của lệnh không xác định - vì vậy tôi cần giữ một thứ như danh sách tĩnh bên trong proc
. Điều đó có thể không?Biến tĩnh trong Tcl
6
A
Trả lời
4
Hoặc bạn chỉ có thể sử dụng một biến toàn cầu thẳng:
set varList {}
proc useCount {value} {
global varList ;
lappend varList $value
}
useCount One
useCount Two
puts $varList
2
số Nhưng bạn có thể sử dụng một mảng (thường namespaced) toàn cầu được lập chỉ mục theo tên proc ví dụ:
namespace eval foo {
variable statics
array set statics {}
}
...
proc ::foo::bar args {
variable statics
upvar 0 statics([lindex [info level 0] 0]) myvar
# use myvar
}
2
Tcl làm không hỗ trợ biến tĩnh. Thay vì sử dụng một biến toàn cục hoặc một biến bên trong một vùng tên, một cách khác là thực hiện thủ tục của bạn như một phương thức trong một lớp (xem [incr tcl] hoặc snit). Nếu bạn phải triển khai biến tĩnh, wiki Tcl có trang thảo luận vấn đề này: http://wiki.tcl.tk/1532
0
Vì tôi không thích biến toàn cầu (trừ khi bạn có tập lệnh nhỏ), tôi kết hợp các giải pháp từ @kostix và @Jackson:
namespace eval foo {
variable varList {}
}
proc foo::useCount {value} {
variable varList
lappend varList $value
}
foo::useCount One
foo::useCount Two
puts $foo::varList
Các vấn đề liên quan
- 1. Xác định loại biến trong TCL
- 2. biến tĩnh trong c
- 3. biến tĩnh trong ruby
- 4. Biến tĩnh trong C#
- 5. biến tĩnh trong c
- 6. Biến tĩnh trong C++
- 7. Biểu đồ tương tác trong Tcl/Tk
- 8. cách lệnh upvar hoạt động trong TCL?
- 9. DotNet: Biến tĩnh trong DLL
- 10. Biến đổi tĩnh C++
- 11. Con trỏ biến tĩnh?
- 12. Lớp/biến tĩnh Java
- 13. Biến nhiễu tĩnh ASP.net?
- 14. INotifyPropertyChanged cho biến tĩnh
- 15. Sự khác nhau giữa biến tĩnh và biến tĩnh cuối cùng trong Java
- 16. Biến toàn cầu và biến tĩnh trong PHP
- 17. Peculiar Tcl cú pháp
- 18. Chia sẻ biến trong phương thức tĩnh
- 19. biến tĩnh trong phương pháp dụ
- 20. Tuổi thọ của biến tĩnh trong Android
- 21. Biến tĩnh riêng tư trong lớp php
- 22. biến tĩnh trong phương thức gọi
- 23. Biến tĩnh PHP trong lớp trừu tượng
- 24. thiết lập một biến tĩnh trong java
- 25. Java biến tĩnh trong môi trường cụm
- 26. Biến cuối cùng tĩnh trong Java
- 27. Tự động điền biến tĩnh trong PHP
- 28. Biến tĩnh PHP trong dấu ngoặc kép
- 29. Sử dụng các biến tĩnh trong Android
- 30. Khởi tạo các biến tĩnh trong C
Cập nhật: xem thêm http://wiki.tcl.tk/memoizing cho một ý tưởng chung – kostix