Hi,

On Tue, Feb 24, 2015 at 8:57 AM, stepharo <steph...@free.fr> wrote:

> Doru and Yuriy
>
> String is not a good API for reflective operations. This is what you are
> doing with asPackage.
> When I want to access to a class I do
>     Class
>     or Smalltalk globals classNamed: 'Point'
>

As I said, there is already a String>>asClass. It seems that since it was
introduced, people prefer to send Gofer scripts like:

#ConfigurationOfXYZ asClass loadDevelopment
instead of:
(Smalltalk globals classNamed: 'ConfigurationOfXYZ') loadDevelopment


    a compile method Point>>#x
>     and not 'Point?x' asCompiledMethod
>

I think this is not quite the same: one is interpreting a notation and one
is looking something up by name.



>     I would prefer to have Package named: 'jkljk' than the string behavior.
>

RPackage named: 'XYZ' already exists in the image and is a constructor that
returns a new package object without looking it up in the organizer.

Perhaps we can add RPackage class>>#@:
RPackage @ 'XYZ'

Yet, even in that case, working with this would require parentheses:
(RPackage @ 'XYZ') linesOfCode

I still somehow think that from a reader's point of view, this is more nice:
'XYZ' asPackage linesOfCode


and what if I want to reflect on code that is remote?
>

Package named: 'aaa' would not solve that problem either. Still it would be
reasonable solution would be Ok


So I maintain that we are polluting String with reflective operations that
> it should not have.


I see the point, and I would definitely like to have a first class support
for important objects like packages. However, I think the problem is not so
black and white. I see string extensions like this as a convenience that
enables cheap fluent interfaces. For example, PetitParser relies on this
pattern quite successfully.

I can delete it from the system if it's so decided, but then we should also
remove #asClass.

Cheers,
Doru


-- 
www.tudorgirba.com

"Every thing has its own flow"

Reply via email to