Modules can import other modules to be able to use their classes directly.

Anyway, this is theory, there is no module implementation currently.

But the idea in the recent versions of Pharo (5-6-7) was to start moving
away from things like (Smalltalk at: #className) or (#className asClass)
since it does not work with the module system that is going to be
introduced.


On Sat, Feb 10, 2018 at 3:33 PM, Peter Uhnák <i.uh...@gmail.com> wrote:

> > c) self class environment at: #Array
> > => this will work in the future if your code is a class which
> environment/namespace/module includes the Array class you would expect
>
> Let's say that namespaces are added; Array is now in the module
> Collections.Array
> My code is now in module MyProject.MyWhatever
>
> I would imagine that in such situation I would need to change the code
> anyway, because it would try to look up MyProject.Array, no?
>
> So if the argument for asClass is based on future addition of modules,
> then I will need to manually change it anyway regardless of what approach I
> used, because I don't know in which namespace the class will end up.
>
> Am I missing something?
>
> Thanks,
> Peter
>
>
> On Sat, Feb 10, 2018 at 1:47 PM, Clément Bera <bera.clem...@gmail.com>
> wrote:
>
>> Hi,
>>
>> In short, everything that is not namespace/module compatible will be
>> deprecated/changed/removed in the future, so it is not recommended to use
>> it.
>>
>> a.2) #Array asClassInEnvironment: Smalltalk globals
>> b.1) Smalltalk globals at: #Array
>> => Ok-ish, note that you may need to change 'Smalltalk globals' the
>> namespace/module when support for those will be added since Array will be
>> in a module.
>> Maybe you want instead to use instead:
>>
>> c) self class environment at: #Array
>> => this will work in the future if your code is a class which
>> environment/namespace/module includes the Array class you would expect
>>
>> a.1) #Array asClass
>> b.2) Smalltalk at: #Array
>> b.3) Smalltalk classNamed: #Array
>> => In which namespace/module are you looking for #Array ? In the future
>> this may be removed, alternatively it will work only for globals but not
>> globals inside namespace/module which won't work since Array will be in a
>> module.
>>
>>
>> On Sat, Feb 10, 2018 at 12:57 PM, Peter Uhnák <i.uh...@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> what is the canonical way to get a class from a symbol?
>>>
>>> a) Converting symbol into class via string protocol
>>>
>>> a.1) #Array asClass
>>> I use this the most, because it is easy, uses unary selector, and so far
>>> I've never ran into any issues. But apparently it is not good -- why?
>>>
>>> a.2) #Array asClassInEnvironment: Smalltalk globals
>>>
>>> b) Retriving the class by key from the system dictionary
>>>
>>> b.1) Smalltalk globals at: #Array
>>>
>>> b.2) Smalltalk at: #Array
>>>
>>> b.3) Smalltalk classNamed: #Array
>>>
>>> c) something else entirely?
>>>
>>> I get that using #asClass wouldn't work if there was a different
>>> environment, however I don't even know in what situation there could be a
>>> different environment, so I cannot assert how problematic it is or isn't.
>>>
>>> Thanks,
>>> Peter
>>>
>>
>>
>>
>> --
>> Clément Béra
>> Pharo consortium engineer
>> https://clementbera.wordpress.com/
>> Bâtiment B 40, avenue Halley 59650
>> <https://maps.google.com/?q=40,+avenue+Halley+59650%C2%A0Villeneuve+d'Ascq&entry=gmail&source=g>Villeneuve
>> d
>> <https://maps.google.com/?q=40,+avenue+Halley+59650%C2%A0Villeneuve+d'Ascq&entry=gmail&source=g>
>> 'Ascq
>> <https://maps.google.com/?q=40,+avenue+Halley+59650%C2%A0Villeneuve+d'Ascq&entry=gmail&source=g>
>>
>
>


-- 
Clément Béra
Pharo consortium engineer
https://clementbera.wordpress.com/
Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq

Reply via email to