On 2 May 2013 16:37, Ben Coman <b...@openinworld.com> wrote: > Sven Van Caekenberghe wrote: >> >> On 02 May 2013, at 06:03, Igor Stasenko <siguc...@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. > it is not the case, when you know the name beforehand.
because then why would anyone write 'Smalltalk at: #XXX' while he can just write 'XXX' it is for cases like following: name := self readNameFromSomeExternalSource. (Smalltalk at: name ifPresent: [:cls | cls doSomething) > 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. >>> >>> >> >> >> >> >> > > > -- Best regards, Igor Stasenko.