Façon la plus propre de faire des constantes de module

a marqué ce sujet comme résolu.

Bonjour,

Je souhaiterais avoir des constantes de module, seulement je ne trouve pas ça très pratique ni très propre, je m'y prend sûrement mal…
Voici mon code :

1
2
3
4
5
6
7
8
9
module Fish
  # === Constants ===
  # Gender
  UNKNOW = :unknow
  MALE = :male
  FEMALE = :female

  def add(commun_name, scientific_name, gender, number); end
end

L'avantage c'est que je peux faire ça :

1
Fish::MALE

Mais définir MALE = :male je trouve ça un peu répétitif.

Ce que je voudrais c'est que le paramètre gender soit égal à une des constantes définies au-dessus. Peut être utiliser une liste, mais c'est pas pratique du tout ça..

Comment puis-je fais ça ?
Merci de votre aide

EDIT : Ou alors je crée un nouveau module Gender avec mes différentes constantes dedans mais pareil, c'est un peu lourd non ?

+0 -0

Comme expliqué ici, tu n'as, semble il, aucun moyen d'avoir des Enum comme dans pas mal d'autres langages.

Dans un langage dynamique comme Ruby, je ne trouve pas ça extrêmement choquant, puisque un des intérêts des enums provient du fait que le compilateur vérifie que l'utilisateur fournisse bien un élément de l'énum quand celui ci est attendu. Cet avantage disparaît totalement dans un langage dynamique, puisque ces vérification doivent être faite "à la main" au runtime.

Héhé non justement pas d'énumération en Ruby. Je trouve ça également dommage, car c'est vraiment hyper pratique ! Peut être que ce sera ajouté dans une prochaine version…

Après il existe bien une classe pour les enums en ruby mais elle n'est pas officiel, je me disais qu'il devait bien y avoir un moyen plus propre de faire ça ! Mais apparemment non, il est conseillé de passer par un classe mais du coup je n'ai pas du tout la vérification automatique, il faut que je le fasse à la main (bon en une ligne c'est fait… Mais c'est moins pratique ;) )

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte