Fragments (1)

20 novembre 2018

Cliquez sur l’image pour agrandir

Enthousiasmé par cette idée géniale (Pharo Script of the Day), fournir des scripts simples pour montrer rapidement certains aspects de Pharo Smalltalk, j’ai décidé de reprendre l’idée et de, moi aussi, vous offrir quelques fragments de code Smalltalk.

Voici donc le premier de ces scripts, fragments de code.

Une idée toute simple qui vous permet d’itérer sur les éléments d’une collection avec une probabilité d’évaluer le block fourni.  C’est particulièrement utile si vous avez à écrire du code de simulation!

Vous n’avez qu’à implémenter la méthode qui suit dans la classe SequenceableCollection.


sometimes: aNumber do: aBlock 
	| rng |
	
	(aNumber between: 0 and: 1) 
            ifFalse: [self error: 'Argument <aNumber> must be between 0 and 1!'].
	rng := Random new.
	self do: [:each | (rng next < aNumber) ifTrue: [aBlock value: each]] 


 

 

Publicités

Énumérez-vous?

1 mai 2014

Vous avez une de ces classes qui se comporte partiellement comme une collection mais qui n’en est pas une?  Qui plus est, vous n’avez pas fait hériter celle-ci de Collection?  Tout ce dont vous avez besoin c’est d’implémenter quelques fonctionnalités du protocole d’énumération sans trop exposer les détails internes de ladite classe au reste du monde?

Il existe maintenant une librairie appelée ExternalEnumeration (pour VisualWorks mais le code est facile portable à d’autres dialectes) qui fait tout ce dont vous avez besoin!