なひです。

arton wrote:
>>どなたかruby mappingに関する相談に乗ってください。以下ではXML Schemaによ
>>る型定義とRubyの言語マッピングを例にしていますが、本質的には「enumの言語
>>マッピングをどうしよう」なので、RELAXでもCORBA IDLでもASN.1でもあてはま
>>ると思います。
> 
> 僕が、スキーマコンパイラを利用していて、こうあって欲しいなと感じるのは、

コメント助かります。ありがとうございます。

> enumで定義された名前をプログラム中で定数として使えることです。

> 1)
> hobbit = Hobbit.new
> hobbit.name = Hobbitname.frodo
> p hobbit.name
> ->
> "frodo"
> 
> 2)
> if hobbit.name == Hobbitname.sam
>   puts 'Hi Sam !'
> end
> 
> 多分、利用方法が、上の2)のほう(XMLインスタンスを利用するアプリケーショ
> ン)が多いからそう感じるみたいです。
> 結局、制約として利用されることは望んでいなくて、定数としてプログラム中か
> ら明示的に利用可能であって欲しいということになります。
> その意味ではなひさんの案3ではなく、むしろ案1かな。

そうですね。なひの案1だと定数になっているところが、上のartonさん案だとク
ラスのメソッドになりますかね。

module Hobbitname
  def frodo
    "frodo"
  end
  module_function :frodo

もしくは

  FRODO = "frodo"
end

こんなん?

インターフェイスとして定義されているものの、文字列のサブクラスかどうかっ
て、Rubyじゃあまり意味ないですしね。Hobbitname.frodo / Hobbitname::FRODO
はちゃんと、文字列のように振舞う(というか文字列)なんだから、これで問題も
起こらない、と。とりあえず案4と呼ぶことにします。

案3よりは案4のほうがいいなぁ。