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