Agrego nuevo caso

http://www.gnu.org/software/smalltalk/manual/html_node/Defining-methods.html#Defining-methods


         Account class extend [
            new [
                | r |
                <category: 'instance creation'>
                r := super new.
                r init.
                ^r
           ]
        ]


Guau! hay un unary message extend, y luego un bloque?

Cosa Golda! :-)

2012/3/23 Angel Java Lopez <[email protected]>

> Hola gente!
>
> El anio pasado consegui traducir codigo Smalltalk a Javascript, y
> ejecutarlo en NodeJs, asi como en el browser. En estos dias tengo otro
> "approach" para hacer lo mismo, pero ya directamente escrito en Javascript
> (el anterior trabajo esta en C#).
>
> Queria traducir/portar algun web framework simple de Smalltalk a
> Javascript, y ejecutarlo desde NodeJs. Llegue a ver a:
>
>
> http://www.iliadproject.org/pages/Documentation/Getting-started/The-counter-example
>
> Y ahi me encuentro con el tema de esta consulta/pregunta. Veo:
>
> Iliad.ILWidget subclass: MyWidget [
>
>   contents [
>     ^[:e |
>       e div
>         class: 'example';
>         h1: 'hello world!']
>     ]
> ]
>
> Nunca habia visto esto de poner un bloque asi. En el libro de Smalltalk-80
> no parece que este. Por lo que entendi, define metodos, en este caso
> contents.
>
> Lo que no entiendo, es como se implemento esta sintaxis en Smalltalk. Es
> que asi escrito, el bloque parece un mensaje unario que se envia a
> MyWidget. Pero debe estar pasando otra cosa.
>
> Entiendo que se envia el mensaje con selector subclass: a ILWidget, y a lo
> que retorna, se le aplica de algun modo el bloque. Es asi?
>
> Es algo que para implementarlo hubo que cambiar el Compiler de Smalltalk?
>
> Es algo solo para cuando se envia subclass: ?
>
> Es #subclass el selector del message? O el compilador lo pasa a algo como
> #subclass:withblock: ?? (yo apuesto a esto ultimo)
>
> Como se escribiria en Smalltalk-80 clasico?
>
> Esta "notacion" esta soportada en todos los Smalltalks? en la mayoria? en
> la mitad?
>
> Veo tambien esa notacion en:
> http://etoileos.com/dev/docs/languages/smalltalk/
>
> NSObject subclass: LS
> [
>     run
>     [
>         | fm files out |
>         fm := NSFileManager defaultManager.
>         files := fm directoryContentsAtPath:'.'.
>         out := NSFileHandle fileHandleWithStandardOutput.
>         files foreach:[ :x | x printOn:out. '\n' printOn:out. ].
>     ]
> ]
>
> Cualquier aclaracion, bienvenida!
>
> Nos leemos!
>
> Angel "Java" Lopez
> http://www.ajlopez.com
> http://twitter.com/ajlopez
>
>

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a