Wie kann ich C # -Stil-Enumerationen in Ruby verwenden?

8

Ich möchte nur die beste Methode kennen, um eine C # -Stil-Enumeration in Ruby zu emulieren.

    
fooledbyprimes 02.10.2008, 21:36
quelle

5 Antworten

5
  

Genauer gesagt, würde ich gerne in der Lage sein, logische Tests gegen die Menge von Werten durchzuführen, die eine Variable gegeben hat. Beispiel wäre der Zustand eines Fensters: "minimiert, maximiert, geschlossen, offen"

Wenn Sie die Enumerationen auf Werte abbilden möchten (z. B. müssen Sie minimiert auf 0, maximiert auf 100 usw.), verwende ich einen Hash der Symbole zu Werten, wie folgt:

%Vor%

Das Einfrieren (wie Nate sagt) hindert Sie daran, Dinge in Zukunft durch Zufall zu zerbrechen. Sie können überprüfen, ob etwas gültig ist, indem Sie dies tun

%Vor%

Alternativ, wenn Sie keine Werte benötigen und nur "Mitgliedschaft" überprüfen müssen, dann ist ein Array in Ordnung

%Vor%

Benutze es so

%Vor%

Wenn Ihre Schlüssel Zeichenfolgen sind (wie zum Beispiel ein "Status" -Feld in einer RoR-Anwendung), können Sie ein Array von Zeichenfolgen verwenden. Ich mache das die ganze Zeit in vielen unserer Rails Apps.

%Vor%

Das ist so ziemlich das, wozu rails validates_inclusion_of validator für folgendes gedacht ist: -)

Persönlicher Hinweis:

Ich mag es nicht, include? die ganze Zeit, also habe ich das (es ist nur wegen der .in? (1, 2, 3) Fall kompliziert:

%Vor%

Damit können Sie

eingeben %Vor%     
Orion Edwards 02.10.2008, 22:24
quelle
5

Es ist nicht ganz dasselbe, aber ich werde oft einen Hash für diese Art von Sache erstellen:

%Vor%

Das Einfrieren des Hashes verhindert, dass ich versehentlich den Inhalt ändere.

Wenn Sie außerdem einen Fehler beim Zugriff auf etwas, das nicht existiert, ausgeben möchten, können Sie einen defualt Proc dazu verwenden:

%Vor%     
Nate 25.02.2009 17:33
quelle
3

Ich glaube nicht, dass Ruby echte enums unterstützt - obwohl es immer noch Lösungen gibt.

Aufzählungen und Ruby

    
Jonathan Lonowski 02.10.2008 21:43
quelle
3

Der einfachste Weg, ein Enum in Ruby zu definieren, um eine Klasse mit konstanten Variablen zu verwenden.

%Vor%     
Ris Adams 02.10.2008 22:02
quelle
1

Eine Klasse oder einen Hash zu erstellen, wie andere gesagt haben, funktioniert. Ruby zu tun ist jedoch, Symbole . Symbole in Ruby beginnen mit einem Doppelpunkt und sehen so aus:

%Vor%

Sie sind wie Objekte, die nur aus einem Namen bestehen.

    
Neall 02.10.2008 22:15
quelle