0
class Appointment
def self.listen_to(*methods)
methods.each do |method_sym|
mth = method(method_sym) # <- doesn't find method `something`
define_method(method_sym) do
print "<listen>#{mth.call}</listen>"
end
end
end
def something
print "doing something"
end
listen_to :something
end
Undefined method 'something' for class 'Class'
この問題は、method(:somesymbol)
がクラスのスコープ内にあり、メソッドのインスタンススコープ内では見えないようです。クラススコープ内からのインスタンススコープへのアクセス
something
の方法はdef self.listen_to
-classmethodからアクセスできますか?
ありがとうございました!これは、私の元の問題(ラッパーメソッドを作る)を解決しますが、この問題で使われているアプローチを完全には解決しません。 '#'に対して 'call'は未定義となりました。それを動作させるためには何が必要ですか? –
kornfridge
@kornfridge更新された回答を参照してください。 –
これは問題を解決/解決します。受け入れられました。再度、感謝します – kornfridge