ローカル変数とインスタンス変数の参照・代入
今知ったのだけど、 Ruby はこういう動きをします。
class Foo attr_accessor :val def bar val # => 123 end def zot val # => 123 val = 456 val # => 456 end end foo = Foo.new foo.val = 123 foo.bar # => 123 foo.zot foo.val # => 123
- メソッド中で最初に参照した場合は、同名のインスタンス変数があればその値が返る。
- メソッド中で代入した後は、ローカル変数が返る。
私は、同名のインスタンス変数があれば、
すべてそちらが参照されると認識していたのですが、違いました。
間違えて教えてしまった人、すみません。
動きとしては、まあ納得の行くものかと。
Python もちょっと変なところがあったな〜。