[解決済み] [RubyでEnumを実装するには?
2022-05-02 14:26:14
質問
Rubyでenumイディオムを実装するのに最適な方法は何ですか?Java/C#のenumのように(ほぼ)使えるものを探しています。
どのように解決するのですか?
2つの方法 シンボルマーク(
:foo
表記)または定数(
FOO
という表記があります)。
記号は、コードを文字列で散らかさずに可読性を高めたい場合に適しています。
postal_code[:minnesota] = "MN"
postal_code[:new_york] = "NY"
定数は、重要な基礎となる値を持っている場合に適しています。定数を保持するためのモジュールを宣言し、その中で定数を宣言してください。
module Foo
BAR = 1
BAZ = 2
BIZ = 4
end
flags = Foo::BAR | Foo::BAZ # flags = 3
2021-01-17追記
もし、enumの値を受け渡し(例えば、データベースに保存)、その値をシンボルに変換する必要がある場合、両方のアプローチのマッシュアップがあります。
COMMODITY_TYPE = {
currency: 1,
investment: 2,
}
def commodity_type_string(value)
COMMODITY_TYPE.key(value)
end
COMMODITY_TYPE[:currency]
このアプローチは、andrew-grimmの回答からヒントを得ました。 https://stackoverflow.com/a/5332950/13468
この問題を解決する方法はたくさんありますし、結局のところ、他の言語の enum のどこが気になるのか、ということになりますから。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Goでenumを表現する慣用的な方法は何ですか?
-
[解決済み】C#で文字列をenumに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】RVMをアンインストールする方法は?[重複] RVMのアンインストール方法
-
[解決済み】ActionController::UnknownFormat
-
[解決済み] Rubyのローカル変数が未定義である
-
[解決済み] Rubyの除算はなぜ10進数ではなく整数を返すのですか?
-
[解決済み] ルビー最大整数
-
[解決済み] Rubyの配列から文字列への変換
-
[解決済み] rubyでディレクトリからすべてのファイルを要求する最良の方法?
-
[解決済み] 配列に何かを追加しようとしたときに、nil から整数への暗黙の変換が行われない。
-
[解決済み] ルビー.天井と.床
-
[解決済み] ハッシュのキーと値を入れ替える方法