アクセサー (Ruby のようなプロパティ) が終了しない場合に呼び出される Ruby クラスに追加できる、デフォルトのメソッドまたはクラス アクセサーはありますか? 次に、データベースから読み取った配列リストのように応答するカスタム コードを記述できます。このコードでは、アクセサー コードを記述しなくても、アクセサーのように値にアクセスできます (データベースから読み取った場合は不明であるため)。
Ruby MRI 1.9 の使用
ありがとうございました!
アクセサー (Ruby のようなプロパティ) が終了しない場合に呼び出される Ruby クラスに追加できる、デフォルトのメソッドまたはクラス アクセサーはありますか? 次に、データベースから読み取った配列リストのように応答するカスタム コードを記述できます。このコードでは、アクセサー コードを記述しなくても、アクセサーのように値にアクセスできます (データベースから読み取った場合は不明であるため)。
Ruby MRI 1.9 の使用
ありがとうございました!
はい、それは呼ばれてい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] = ...
スタイルに加えて、以下同様です。