On Mon, Sep 24, 2012 at 10:57 PM, Stéphane Ducasse < stephane.ducasse@inria.fr> wrote:
No just make instVarNamed: work on Class/Metaclass
but then you won't be able to reach the normal instance variables of a class (the metaclass): Nautilus class instVarNamed: 'format' -> 164 I won't be able to do that if we override #instVarNamed: That's why I think I prefer the rename to #myInstancesVariableNames
On Sep 24, 2012, at 8:24 PM, Guillermo Polito wrote:
What if we do it the other way? Add #variableNames to the instances :)
Nautilus new variableNames = Nautilus instVarNames.
And them
Nautilus new variableNames ==> #('announcer' 'browsedEnvironment' 'browsingHistory' 'plugins' 'selectedCategory' 'selectedClass' 'selectedGroup' 'selectedMethod' 'selectedPackage' 'showCategories' 'showComment' 'showGroups' 'showHierarchy' 'showInstance' 'showPackages' 'ui' 'uiClass')
Nautilus new instVarNamed: 'announcer'
?
Of course, that will happen/work at metaclass level too.
Maybe rename #instVarNames to #myInstancesVariableNames?
Guille
On Mon, Sep 24, 2012 at 8:18 PM, Camillo Bruni <camillobruni@gmail.com> wrote: On 2012-09-24, at 20:15, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
On Sep 24, 2012, at 6:51 PM, Camillo Bruni wrote:
Nautilus class instVarNames -> #('maxSize' 'cachedLastClasses' 'groups')
ok we get the instance variables
Nautilus class instVarNamed: 'groups' -> error
For me that is wrong. I should not get an error, I should get the actual variable. I mean, why #instVarNames workds but #instVarNamed: doesn't? That is inconsistent.
to me mariano is right. if I can ask a class for a receiver a list of stuff I should be able to send to the same receiver the value of the named elements. this distinction is confusing (Normally I know what is metaclass programming)
but with methods it's the very same, you get them no the class side, but you cannot do anything with them on the class.
The problem is just that on a Class the instance side (of the Metaclass) and the class side collapse, so you have a double interface there.
unless you have a strict and weird kind of separation of these two layers like in Java, you will always have a double set of methods there..
-- Mariano http://marianopeck.wordpress.com