yamazのRails日記 このページをアンテナに追加 RSSフィード

2007-01-25RubyでもEnum使いたい このエントリーを含むブックマーク

RubyでもCみたいにEnumを使いたい.そんなアナタに.

(なおEnumは文字を列挙するとその文字の変数に0から順番に値を振ってくれるものです)

class Object
  def enum(*list)
    mc = Module === self ? self : self.class
       list.flatten.each_with_index{|e, i| mc.const_set e.to_s.intern, i}
  end
  def bit_enum(*list)
       mc = Module === self ? self : self.class
       list.flatten.each_with_index{|e, i| mc.const_set e.to_s.intern,  2 ** i}
  end
end

使い方はこんな感じ.

>> enum %w(FOO BAR BAZ)
=>  ["FOO", "BAR", "BAZ"]
>> [FOO,BAR,BAZ]
=> [0, 1, 2]


>> enum (:HOE, :HOGE, :HOEHOE)
=> [:HOE, :HOGE, :HOEHOE]
>> [HOE,HOGE,HOEHOE]
=> [0, 1, 2]

(おしまい)

あわせて読みたい

enum collection of constant values

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/150439

からの一連のスレッドの流れ.

yamaz的日常

周防正行監督 「それでも僕はやってない」を奥さんと見てきた.


http://d.hatena.ne.jp/yjochi/20070124#1169567607


このあたりに本職の人のコメントがあるけど,あまりにも生々しく,

奥さんからも「yamazは考え事を始めると周りが見えなくなるから

気をつけた方がいい」と注意されてしまった.

満員電車に毎日乗ってる人はこの映画を見て意識して電車に乗らないと,

あらぬ疑いをかけられて人生を棒に振るかも知れないなぁとマジに思ってしまった.

トラックバック - http://rubyist.g.hatena.ne.jp/yamaz/20070125