On 2 May 2013 15:37, Ben Coman <btc@openinworld.com> wrote:
Sven Van Caekenberghe wrote:
On 02 May 2013, at 06:03, Igor Stasenko <siguctua@gmail.com> wrote:
Hi, all
do not think that i am drunk or vent crazy, asking such silly question, which at best should be asked only by beginner :)
I know the answer:
Smalltalk at: #SomeName
or
Smalltalk globals at: #SomeName
what stroke me, just now, that both answers is wrong!
It should be:
#SomeName asGlobal
(or suggest more appropriate/precise method name for a symbol)
ConfigurationOfXYZ globalValue project bleedingEdge load.
ConfigurationOfXYZ globalValueIfPresent: [ :configuration | configuration project bleedingEdge load ]
An alternative could be globalBinding, but that is more technical.
#asGlobal sounds like a conversion, on the other hand it is an accepted idiom.
#asGlobal feels confusing to me. It doesn't sound like a lookup. Some other alternatives:
#SomeName fromGlobal #SomeName from: someOtherEnvironment
#SomeName fromEnvironment "the current one" #SomeName fromEnvironment: someOtherEnvironment
#SomeName fromEnv: someOtherEnvironment #SomeName fromEnv "the current one"
but why bother at all. What is the advantage over this:
Smalltalk at: #xx put: 1. xx inspect.
But the use case here is when you want to reference a class that has not yet been loaded, which happens every time you run a load script for a ConfigurationOf. frank
cheers -ben
optionally, we could also have one, with handling absent case:
#SomeName asGlobalIfAbsent: []
same , but only if present:
#SomeName asGlobalIfPresent: [:global | ]
Currently, there is 941 references to 'Smalltalk' global in my pharo image. If we introduce this convenience method, it will shrink this number considerably, not saying that code will be more elegant and concise compare:
(Smalltalk globals at: #Foo) doSomething
and
#Foo asGlobal doSomething
P.S. What really strikes me is why we don't have such method from very beginning, and instead refer to 'Smalltalk' all over the places. Some things are so deeply indoctrinated in our minds, that we don't even think that it can be different.
-- Best regards, Igor Stasenko.