0
私がFoo.new
に電話するとメソッドのエラーが発生しますが、問題なく通過します。試してみるとコードが失敗しますFoo.new.bar
Rubyは初期化と自己
どのようにしてFoo.new.foo
変数にアクセスできますか?
私がFoo.new
に電話するとメソッドのエラーが発生しますが、問題なく通過します。試してみるとコードが失敗しますFoo.new.bar
Rubyは初期化と自己
どのようにしてFoo.new.foo
変数にアクセスできますか?
あなたはタイプミスがあります。initialize
はitnialize
と綴りが間違っていますので、エラーは発生しません。
インスタンス変数を作成しようとしているようです。つまり、どこかで、接頭辞@
で定義する必要があります。だから、行う可能性があります:あなたを意味するだろう
def initialize(name)
@foo = name
end
がクラス内@foo
にアクセスすることができます。
self.foo
は今まで方法foo
を参照することができますので、あなたは、あなたがそれを呼び出すようにしたい場合は、明示的またはattr
変種のいずれかを使用して、そのメソッドを定義する必要があります。
ただし、この場合には、あなただけの
def set_bar
@bar = 'it will succeed!'
end
が、それがこのパズルそのhttp://rubeque.com/problems/fixing-bad-code-the-wrong-way/悪いようですマイ行うことができますソリューションは意味をなさない... – luacassus
ちょうどパズルを見ていたが、それがどのように関連しているか見ることができない!パズルは意味をなさない - タイトルは "間違った方法で悪いコードを修正する" *非常に、非常に適しています*。 – Russell
私はパズルに焦点を当てるのは、 'method_missing'の定義だと思います。あなたはこのメソッド以外のコードを変更する必要はありません。 – Russell