From: jason@... (Jason Voegele) Date: 2001-11-02T01:18:35+09:00 Subject: [ruby-talk:24095] C-like enum For those of you who want a simple "enum" feature for Ruby (a-la C), try this: module Kernel # simple (sequential) enumerated values def enum(*symbols, &init_val) i = 0 if block_given? i = init_val.call end symbols.each do |symbol| module_eval("#{symbol} = i") i += 1 end end # enumerated values suitable for bitwise OR-ing def enum2(*symbols) i = 1 count = 0 symbols.each do |symbol| module_eval("#{symbol} = i") count += 1 i = 2**count end end end class EnumTest enum(:ONE, :TWO, :THREE) {1} enum2 :READ, :WRITE, :EXECUTE def initialize puts ONE puts TWO puts THREE puts READ puts WRITE puts EXECUTE end end EnumTest.new Hope you find this useful. Jason Voegele