On Mon, Nov 7, 2011 at 3:21 PM, Markus Rother <[email protected]>wrote:

>  On 11/07/2011 11:08 PM, Stéphane Ducasse wrote:
>
>
>  The issue I could not solve on my own is this:
> I would like to instantiate from symbols. My use-case is a collection of 
> class names which I want to ask to return one instance each.
>
>  why are you trying to do?
> because symbols are not done to be instantiated like that.
>
> aString asSymbol is instantiating symbols for you.
>
> Stef
>
>
> Thanks everybody for the kind, plenty and swift replies.
>
> Here is what I was up to:
>
> ChessBoard class>>newGame
> | newBoard |
> ...
> firstRow := #(Rook Knight Bishop Queen King Bishop Knight Rook).
>     1 to: 8 do: [ :col |
>         (newBoard at: 1 at: col) putFigure: (firstRow at: col) asClass
> newWhite
>         ].
> ...
>
> Symbol>>asClass
>     ^(Smalltalk classNamed: self)
>
>
> I don't see how a string representation would have helped me here...?
> Although, I am a noob, my intuition tells me that symbols are absolutely
> fine, here - especially considering they are used precisely for that
> purpose internally.
>

But so is

ChessBoard class>>newGame
    | newBoard |
    ...
    firstRow := {Rook. Knight. Bishop. Queen. King. Bishop. Knight. Rook}.
    1 to: 8 do: [ :col |
        (newBoard at: 1 at: col) putFigure: (firstRow at: col) newWhite
        ].
...

as could be
    newBoard
        at: 1 put: ({Rook. Knight. Bishop. Queen. King. Bishop. Knight.
Rook} collect: [:class| class newWhite];
        at: 2 put: (1 to: 8) collect: [:ign| Pawn newWhite];
        atAll: (3 to: 6) put: (Array new: 8);
        at: 7 put: (1 to: 8) collect: [:ign| Pawn newBlack];
        at: 8 put: ({Rook. Knight. Bishop. Queen. King. Bishop. Knight.
Rook} collect: [:class| class newBlack]
>
>
> Greets,
> Markus
>



-- 
best,
Eliot

Reply via email to