Comment implémenter les enums en ruby?

Créé le 09 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - rubyenums

Un Enum, ou énumération, est un type de données qui représente une liste finie des valeurs possibles. Lorsque vous déclarez un Enum, vous définissez un ensemble de constantes associées à un type de données. En Ruby, vous pouvez facilement implémenter un Enum en utilisant le module Ruby Module pour définir une classe avec des constantes statiques. Une fois que votre classe est définie, vous pouvez utiliser la syntaxe .constant pour accéder aux valeurs des constantes. Vous pouvez également utiliser la méthode de type? pour vérifier le type d'une valeur donnée.

Pour implémenter un Enum en Ruby, vous devez d'abord créer une classe Enum. Dans cette classe, vous définissez des constantes pour chaque valeur possibles. Une fois que votre classe est définie, vous pouvez utiliser la méthode .constant sur votre objet Enum pour récupérer la valeur associée à l'une des constantes. Vous pouvez également utiliser la méthode de type? pour vérifier le type d'une valeur donnée.

Par exemple, vous pouvez créer une classe Enum avec les constantes suivantes :

class Enum
  UPPERCASE = 'uppercase'
  LOWERCASE = 'lowercase'
  MIXEDCASE = 'mixedcase'
end

Vous pouvez ensuite utiliser la méthode .constant pour récupérer la valeur associée à l'une des constantes :

Enum.const_get('UPPERCASE') # =>> 'uppercase'

Vous pouvez également utiliser la méthode de type? pour vérifier le type d'une valeur donnée :

Enum.const_get('LOWERCASE').is_a? Enum # =>> true

Questions supplémentaires

Comment puis-je créer des constantes dans mon Enum?


Vous pouvez créer des constantes dans votre Enum en définissant des variables de classe à l'intérieur de votre classe Enum. Vous pouvez définir une constante en assignant une valeur à une variable de classe statique, par exemple :

class Enum
  UPPERCASE = 'uppercase'
end

Comment puis-je vérifier si une valeur est de type Enum?


Vous pouvez vérifier si une valeur est de type Enum en utilisant la méthode de type?. Cette méthode prend un objet et vérifie si il est de type Enum. Si c'est le cas, la méthode renvoie true, sinon elle renvoie false. Par exemple :

Enum.const_get('LOWERCASE').is_a? Enum # =>> true

Quelles sont les limites d'un Enum?


Les Enums sont limités car ils ne peuvent contenir que des valeurs que vous définissez. Vous ne pouvez pas modifier ou ajouter des valeurs à un Enum une fois que vous l'avez défini. De plus, les Enums ne sont pas itérables, c'est-à-dire que vous ne pouvez pas itérer à travers les valeurs d'un Enum.

Comment puis-je ajouter des méthodes à mon Enum?


Vous pouvez ajouter des méthodes à votre Enum en définissant des méthodes à l'intérieur de votre classe Enum. Par exemple, vous pouvez créer une méthode qui renvoie la valeur d'une constante :

class Enum
  def get_constant(constant_name)
    Enum.const_get(constant_name)
  end
end

Comment puis-je ajouter des méthodes de classe à mon Enum?


Vous pouvez ajouter des méthodes de classe à votre Enum en définissant des méthodes statiques à l'intérieur de votre classe Enum. Par exemple, vous pouvez créer une méthode statique qui renvoie la liste des constantes d'un Enum :

class Enum
  def self.get_constants
    Enum.constants
  end
end