Utiliser Enumerable en Ruby
Il y a quelques jours, j’ai testé Opal.rb. Et pour ça, j’ai écris un jeu
du type Space Invaders ;) J’ai une classe Enemy
, que je peux résumer ainsi:
class Enemy
attr_reader :x, :y
def initialize(x, y)
@x = x
@y = y
end
def to_s
"#<Enemy x:#@x y:#@y>"
end
end
J’ai aussi une classe Enemies
, pour gérer ce qui se passe au niveau de
tous les ennemies. Inclure le module Enumerable
et définir la méthode each
me permet d’utiliser toutes les méthodes de ce
module.
class Enemies
include Enumerable
def initialize
@enemies = []
end
def each(&block)
@enemies.each(&block)
end
def <<(item)
@enemies << item
end
end
Créons un groupe de trois ennemies :
enemies = Enemies.new
enemies << Enemy.new(10, 15)
enemies << Enemy.new(20, 15)
enemies << Enemy.new(10, 40)
Voyons si each
fonctionne bien :
> enemies.each {|item| puts item }
#<Enemy x:10 y:15>
#<Enemy x:20 y:15>
#<Enemy x:10 y:40>
J’ai donc accès à toutes les autres méthodes de Enumerable
, comme par
exemple select
:
> puts enemies.select {|item| item.x == 10 }
#<Enemy x:10 y:15>
#<Enemy x:10 y:40>
À demain.
/ / / / / / / / / /
« Trois bibliothèques de fonctions pour écrire vos plugins Vim ---//---
Un space invaders avec Opal.rb - partie 1 »