Je développe (bien, essayant au moins) un cadre de jeu pour la bibliothèque Ruby Gosu. J'ai fait un système d'événement de base où chaque Blocks :: Event a une liste de gestionnaires et quand l'événement est déclenché les méthodes sont appelées. En ce moment la façon de mettre en œuvre un événement est la suivante:Définir la variable d'instance en dehors de la méthode Defenition (ruby)
class TestClass
attr_accessor :on_close
def initialize
@on_close = Blocks::Event.new
end
def close
@on_close.fire(self, Blocks::OnCloseArgs.new)
end
end
Mais cette méthode de la mise en œuvre des événements semble assez longue, ma question est, comment puis-je faire d'une manière de sorte que lorsque l'on veut un événement dans une classe , ils peuvent juste faire ceci
class TestClass
event :on_close
def close
@on_close.fire(self, Blocks::OnCloseArgs.new)
end
end
Merci d'avance, ell.
C'est en effet. Comme je l'ai dit, juste un tir rapide non testé, merci de le signaler :-) –
Il semble fonctionner sur une classe qui ne nécessite aucune logique d'initialisation et cela signifie que je devrais faire un alias, ce qui pour moi devient un peu anti-rubis, en mettant plus de travail que nécessaire, donc je m'en tiendrai à l'ajouter manuellement, peut-être que je trouverai un moyen mais pour l'instant c'est jusqu'à ce que nous nous retrouvions :) – Ell