2009-03-11 3 views
4

アクセサ(Rubyのようなプロパティ)が終了しない場合に呼び出されるRubyクラスに追加できるデフォルトのメソッドまたはクラスアクセサはありますか?次に、データベースから読み取った配列リストのような返信のカスタムコードを書くことができます。この場合、アクセスコードを書くことなくアクセサーのような値にアクセスできます(データベースから読み取れば不明)。 RubyのMRI 1.9デフォルトのRubyアクセサメソッド?

を使用して

ありがとうございました!

答えて

10

はい、これはmethod_missingと呼ばれます。定義されていないメソッドが使用されるたびに呼び出されます。アクセサを使用して、任意のメソッドを追加またはエミュレートすることができます。あなたはHashでこれを投げる場合

たとえば、あなたは、プロパティとして、ハッシュの内容を扱うことができます。

h = {} 
def h.method_missing(*args) 
    if args.length == 1 
     self[args[0]] 
     elsif args.length == 2 and args[0].to_s =~ /^(.*)=$/ 
     self[$1.intern] = args[1] 
     else 
     super 
     end 
    end 

みましょうあなたは書く:

h.bob = "Robert" 

if h.bill == "William" ... 
h[:bob] = ...スタイルに加えて、

などがあります。

関連する問題