Créer un objet à partir d’une chaine de caractère
La syntaxe de Smalltalk définit un bloc de la manière suivante :
bc := [ :a | a traitements. a.].
Ici, le bloc est paramétré. Lors de l’execution du bloc, le message “traitements” est envoyé au paramêtre. Le bloc renvoie la dernière valeur évalué. Ici, il s’agit explicitement de a.
Pour évaluer le bloc, je peux faire :
monObjet := MonObjet new.bc value: monObjet.
Très bien. Admettons maintenant que je dispose de la chaine de caractère suivante :
' [ :a | a traitements. a.]‘
Je souhaite en faire un bloc comme précédemment (en quelque sorte, compiler le code). Et bien, il suffit pour cela d’appeler la méthode readFromString: de Object :
bc := Object readFromString: '[ :a | a traitements. a.]‘.monObjet := MonObjet new.bc value: monObjet.
Et voilà. Je vous invite à essayer la même chose avec les lignes suivantes (faites un “inspect” dessus pour voir ce que cela donne) :
Object readFromString: '34'.Object readFromString: 'coucou'.Object readFromString: '''coucou'''.Object readFromString: 'a := String new.'.Object readFromString: 'a := ''coucou''. b:= 5. '.
Note : dans une chaine de caractères, le caractère spécial ‘ (guillemet simple, ou “simple quote”), est échappé par son doublage. Ainsi, au sein d’une chaine de caractères entourées par des guillemets simples, ” ( ‘ suivi de ‘, et non “) représente un guillemet simple (et non la terminaison de la chaine).
Tags : Block • BlockClosure • Smalltalk • VisualWorksBonne fêtes aux …
onne fête aux Valentin, Valentines, aux amoureux et amoureuses !
Bonne fête à tous, quoi
Just the two of us - Groover Washington Jr
Créer un fichier avec VisualWorks Smalltalk
On souhaite créer un fichier, et y écrire du contenu. Le code suivant permet de créer le NOUVEAU fichier “test.txt” et d’y écrire un mot :
| file |file := 'test.txt' asFilename.file exists ifFalse:[ | ws |ws := file writeStream.ws nextPutAll: 'coucou'.ws close.]
Pour lire le contenu, on peut faire :
Tags : code • Smalltalk • VisualWorks| file contenu |file := 'test.txt' asFilename.file exists ifTrue: [ | rs |rs := file readStream.contenu := rs contents.rs close.].^contenu
Le Turing Award est français !
Le Turing Award 2007 a été décerné à Joseph Sifakis, directeur de recherche au laboratoire Verimag du CNRS à Grenoble. Ce prix récompense ses travaux sur le Model Checking. C’est la première fois qu’un français reçoit cette distinction.
Alan Turing fut, pendant la seconde guerre mondiale, l’un de ceux ayant décrypté la machine de codage Enigma, permettant ainsi aux alliés d’obtenir un avantage stratégique capital. Condamné par la justice britanique pour “indécence manifeste et de perversion sexuelle” (il était homosexuel), il est condamné à la castration chimique. Déprimé, écarté de tout projets, sa carrière brisée, il se suicide deux ans plus tard en croquant une pomme empoisonée avec du cyanure. Le logo d’apple serait un hommage à cet homme et à son tragique destin.
Le Turing Award est le plus prestigieux prix en informatique, considéré souvent comme le prix Nobel des informaticiens. Le Turing Award 2003 a quand à lui été attribué à Alan Kay pour ses travaux sur les langages de programmation objets (Il a participé à la création du langage Smalltalk).
Joseph Sifakis partage son prix avec des américains (Edmund Clarke et Allen Emerson) qui ont travaillé sur les mêmes sujets à la même époque (mais indépendament).
![]()
Projet MNT - 5
Un petit peu moins découpé à la serpe que les le précédent, non ?
Tags : 3D • Jun • Smalltalk • topographie • VisualWorks“New York, New York..”
New York, New York - Frank Sinatra
Start spreading the news, Im leaving today
I want to be a part of it - new york, new york
These vagabond shoes, are longing to stray
Right through the very heart of it - new york, new york
I wanna wake up in a city, that doesnt sleep
And find Im king of the hill - top of the heap
These little town blues, are melting away
Ill make a brand new start of it - in old new york
If I can make it there, Ill make it anywhere
Its up to you - new york, new york
New york, new york
I want to wake up in a city, that never sleeps
And find Im a number one top of the list, king of the hill
A number one
These little town blues, are melting away
Im gonna make a brand new start of it - in old new york
And if I can make it there, Im gonna make it anywhere
It up to you - new york new york
New york
Tags : Giants • New York • SuperbowlSmalltalk et les blocs multi-paramétrés
La problématique est la suivante : comment passer trois paramètres à un bloc, provenant d’une collection (Array, OrderedCollection, ou tout autre …).
monTab := #(1 2 'add').monBloc := [:op1 :op2 :op3 | duCode. ^unResultat].
Je veux executer monBloc avec le contenu de monTab comme paramètres. L’utilisation de do: n’est ici pas appropriée : do: est un message compris par une collection, pas par un bloc. Et pourtant, la réponse est dans cette réponse : un bloc est un objet, comme tout en smalltalk. Il existe donc un message permettant de donner un paramètre à un bloc. Ce message est value: :
monBloc := [:op1 :op2 :op3 | duCode. ^unResultat].monBloc value: 1 value: 2 value: 'add'.
Pour obtenir les éléments de monTab, je propose l’utilisation d’un ReadStream. Cependant, un acces direct aux éléments est aussi possible. Voici les deux solutions :
monTab := #(1 2 'add').monBloc := [:op1 :op2 :op3 | duCode. ^unResultat]." Accès direct aux éléments "monBloc value: (monTab first) value: (monTab at: 2) value: (monTab last)." Une seconde solution : "monStream := monTab readStream.monBloc value: monStream next value: monStream next value: monStream next.
Et voilà !
Tags : code • Smalltalk • Smalltalk programming • VisualWorksProjet MNT - 4
![]()
Le grain est ici de l’ordre du metre. Le plus compliqué va être de constituer une palette élégante.
Tags : 3D • Jun • Smalltalk • topographie • VisualWorksProjet MNT - 3
![]()


Commentaires récents