Entropie anthropique

Aller au contenu | Aller au menu | Aller à la recherche

lundi 28 avril 2008

Comment changer le comportement de "new" dans ruby

Oui, c'est vrai, on utilise initialize nous dit Pouype, mais on peut tout à fait bidouiller avant de créer une instance en tournant autour de "new", voici le code:

 1 class Truc
 2   class << self #construction magique pour que "self" devienne la classe Truc qu'on est en train de créer, car alias marche sur les méthodes d'instances
 3     alias :oldnew :new
 4   end
 5   
 6   attr_accessor :bidule
 7
 8   def Truc.new
 9    p "salut"
10    t = Truc.oldnew #l'instance est créée maintenant là tout de suite, pas avant pas après
11    t.bidule = :chose
12    t #si on ne retourne pas t, alors ce sera :chose qui sera retourné
13   end
14 end
15
16 p Truc.new.inspect

Pour le commentaire, je dirais que c'est juste une preuve du concept, la méthode la plus propre est de créer une méthode de classe du style Truc.new_avec_prout qui à son tour appellera Truc.new .

Pour ceux qui se demandent comment ça se fait qu'on puisse faire ça, c'est qu'il n'y a pas de magie dans Ruby, les concepts de classes/objets/instances ne font pas d'exception à la règle (à ma connaissance). C'est entre autre pour cette raison que Ruby est un peu lent, mais ça prouve qu'il est cohérent et reste un joujou trop génial.

dimanche 27 avril 2008

Projets Ruby qui seraient bien

En vrac, et sans trop plus d'explications:

- un DSL pour générer des parsers de stream (avec possibilité de rajouter ses propres templates pour le langage de son choix)

- plein de scripts pour faire de la recherche / du tri d'information dans les gros volumes

- continuer Férus pour coder des petits jeux simplements

- conquérir le monde à l'aide de deux souris au génie génétique

- des librairies "à la" graphviz pour sortir du .svg