Posted to tcl by stevel at Fri Sep 04 03:56:38 GMT 2009view raw

  1. proc ReadCmd {v1 v2 op} {
  2. upvar 1 $v1 v
  3. if {![info exists v($v2)]} {
  4. after 5000 set ::$v2 1
  5. vwait ::$v2
  6. set v($v2) $v2
  7. }
  8. }
  9.  
  10. proc WriteCmd {v1 v2 op} {
  11. upvar 1 $v1 v
  12. puts "${v1}($v2) set to $v($v2)"
  13. }
  14.  
  15. array set foo {}
  16. trace add variable foo read ReadCmd
  17. trace add variable foo write WriteCmd
  18.  
  19. puts "initial values = [array get foo]"
  20. after 2000 set foo(new) 10
  21. puts "foo(bar) = $foo(bar)"
  22. puts "foo(bing) = $foo(bing)"
  23. puts "final values = [array get foo]"