私はinstance_eval
の後にattr_accessor
の中にinitialize
を入れようとしています。私はこれを続けます。 ``初期化する ':未定義のメソッド' attr_accessor '`。なぜこれは機能しないのですか?初期化の内部でattr_accessorを使用できないのはなぜですか?
コードは一種の次のようになります。
class MyClass
def initialize(*args)
instance_eval "attr_accessor :#{sym}"
end
end
class_evalメソッドはそれを置くと同じであるシンボルであると仮定するとあなたが自己書いたところ – johannes
いいえ、そうではありません。 'class << self; ...; end'はクロージャではありません。その内部で 'varname'にアクセスすることはできませんが、' class_eval'ブロックでアクセスできます。 – sepp2k
[半数の答え](http://stackoverflow.com/a/14978624/403664)が良いです。見てみな。 –