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.

Reply via email to