Version 11 of Learning XOTcl

Updated 2007-10-21 12:14:05

MC: As I go about Learning XOTcl, I decided to wikify some of my questions as I find answers to them to help others in the future. Feel free to add & expand on this page.


Q: What's the equivalent idiom for what snit would call type variables (or static member variables)?

A: On the XOTcl mailing list I received helpful answers from Neophytos Demetriou, Kristoffer Lawson, and Gustaf Neumann. Summarizing here:

 Class Chapters
 Chapters set current_chapter 12345

 # Then any object or class can use
 Chapters set current_chapter

 # while an instance could do:
 Chapters aChapter
 [aChapter info class] set current_chapter 4567
 puts [[aChapter info class] set current_chapter]

 # We can a printCurrentChapter method (an instproc on the Chapters class) as:
 Chapters instproc printCurrentChapter {} {
     puts [[my info class] set current_chapter]
 }

 # and we call the method
 aChapter printCurrentChapter

Another possibility is to bring the classes variable into the scope of a method on an object.

 Chapters instproc incrChapter {} {
     [self class] instvar current_chapter
     incr current_chapter
 }

 aChapter incrChapter

Gustaf in particular pointed out that XOTcl does not need a special construct, since every class is an object as well, and variables kept in a class are nothing special. Note that a programmer can decide which kind of class he is refering to:

  • the class which is the type of the object (via my info class)
  • the current class, which is currently active (via self class)

The type of variable you are refering to is the first one.


XOTcl in prototyping mode XOTcl for prototyping

Category Object Orientation | Category XOTcl Code