|
Angel,
los artículos de Juanita ewing son sobre Smalltalk/V. Allí, como ella dice, hay class variables y class instance variables. Las class variables, paradójicamente, se "declaran"en la "definición" de la clase (junto con las de instancia "de las instancias"), el mensaje #subclass:instanceVariableNames:classVariableNames:poolDictionaries:. Las comillas son porque eso no es una declaración, ni una definición de la clase, sino un mensaje que se envía a un objeto, en este caso, a una clase. Las variables de instancia de la clase, se declaran "del lado class del browser" con otro mensaje que se envía, en este caso, a una metaclase. Por poner un ejemplo (trivial, porque no tiene variables de instancia), sería MessageBox class instanceVariableNames: '' Las variables de clase se empiezan con mayúscula para indicar que son compartidas. Compartidas entre la clase y todas sus instancias, y sus subclases y todas sus instancias. Las variables de instancia de la clase, son sólo eso. La clase es un objeto (cada una, una instancia de Metaclass) y puede tener variables de instancia. Entonces, esas no son compartidas, son "locales" . Se pueden usar en métodos de clase. Si creás una subclase, hereda la definición de las variables de instancia (como pasa con las instancias), pero como es un objeto distinto, tiene otras variables de instancia, aunque tengan el mismo nombre. Puede sonar confuso, pero es exactamente igual que lo que pasa con las instancias. Pharo tiene una implementación diferente y usa algo que llama, propiamente, SharedVariables. A grandes rasgos, para las "variables de clase" es un diccionario en la clase. También lo usa para los "viejos" PoolDictionaries. En cuanto al compilador, los que conozco tienen una ristra de scopes anidados, como cualquier otro. Entonces, una colisión de nombres (por ejemplo, entre una variable de clase y una "global" definida en Smalltalk) se resuelve porque primero está el scope de la clase y más afuera, el del diccionario Smalltalk. Saludos PD: La variable Listmenu no te la muestra, porque no da la "definición " de la clase que está usando, ya que la cambia varias veces. Pero cuando habla de ella, deja claro que es una class variable, consecuente con el hecho de que adhiera a la convención de la mayúscula inicial. On 17/12/2012 03:36 p.m., Angel Java Lopez wrote: Hola gente! -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org |
Title: signature
- [clubSmalltalk] Class (or Shared) Variables Angel Java Lopez
- Re: [clubSmalltalk] Class (or Shared) Variables Guillermo Schwarz
- Re: [clubSmalltalk] Class (or Shared) Variables Angel Java Lopez
- Re: [clubSmalltalk] Class (or Shared) Varia... Carlos E. Ferro
- Re: [clubSmalltalk] Class (or Shared) V... Angel Java Lopez
- Re: [clubSmalltalk] Class (or Shar... Carlos E. Ferro
- Re: [clubSmalltalk] Class (or Shared) Varia... Angel Java Lopez
- Re: [clubSmalltalk] Class (or Shared) Varia... Guillermo Schwarz
