home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / tcl / 1034 < prev    next >
Encoding:
Internet Message Format  |  1992-07-22  |  1.6 KB

  1. Path: sparky!uunet!stanford.edu!agate!agate!adrianho
  2. From: adrianho@barkley.berkeley.edu (Adrian J Ho)
  3. Newsgroups: comp.lang.tcl
  4. Subject: Re: uplevel/upvar and trace
  5. Date: 22 Jul 92 16:44:52
  6. Organization: University of California, Berkeley
  7. Lines: 35
  8. Distribution: usa
  9. Message-ID: <ADRIANHO.92Jul22164452@barkley.berkeley.edu>
  10. References: <1992Jul22.203440.15926@Arco.COM>
  11. NNTP-Posting-Host: barkley.berkeley.edu
  12. In-reply-to: cgp@Arco.COM's message of Wed, 22 Jul 1992 20:34:40 GMT
  13.  
  14. In article <1992Jul22.203440.15926@Arco.COM> cgp@Arco.COM (Chris Phillips  (214) 754-6419) writes:
  15. >However, the following extensions to arrays doesn't work
  16. >for the upvar version:
  17. >       proc a1 {n i op} {
  18. >           set z [uplevel set [set n]($i)]
  19. >           puts stdout $z
  20. >       }
  21. >       proc a2 {n i op} {
  22. >           upvar [set n]($i) z
  23. >           puts stdout $z
  24. >       }
  25. >Why?
  26.  
  27. From the upvar command documentation in the Tcl man page:
  28.  
  29. upvar ?level? otherVar myVar ?otherVar myVar ...?
  30.   [...] Neither otherVar or myVar may refer to an element of an array.
  31.  
  32. which is what you're actually doing in a2.  The following will work:
  33.  
  34.        proc a2 {n i op} {
  35.            upvar [set n] z
  36.            puts stdout $z($i)
  37.        }
  38.  
  39. tcl>trace var b(1) w a2
  40. tcl>set b(1) 2
  41. 2
  42. tcl>
  43. --
  44. -----------------------------------------------------------------------------
  45. Adrian Ho, He With The Embarrassingly *Dead* Passion ** Phone: (510) 642-5563
  46. System Manager, CFD Lab, ME Dept, UC Berkeley * adrianho@barkley.berkeley.edu
  47. Maintainer, Tcl/Tk Contrib Archive ---- barkley.berkeley.edu [128.32.142.237]
  48.   Send all Tcl/Tk Archive-related stuff to tcl-archive@barkley.berkeley.edu
  49.