From: Justin Collins Date: 2011-07-14T10:34:53+09:00 Subject: Re: Issue with: instance_variable_defined? On 07/13/2011 06:03 PM, Hal Fulton wrote: > I expect the third line to be true rather than false. > > Comments? > > Hal > > class SomeClass > attr_reader :a1, :a2 # Creates @a1, a1, @a2, a2 > attr_writer :b1, :b2 # Creates @b1, b1=, @b2, b2= > attr_accessor :c1, :c2 # Creates @c1, c1, c1=, @c2, c2, c2= > # ... > def initialize > @c2 = 99 > end > end > > obj = SomeClass.new > p obj.instance_variable_defined?(:@c2) # true > p obj.instance_variable_defined?(:@d2) # false > p obj.instance_variable_defined?(:@a2) # false :-/ > I was going to say that the attr_* methods don't create instance variables, only the methods to read/write them, as that has been my understanding. But actually, the documentation (at least for attr_reader and attr_accessor) says they _do_ create instance variables. http://rdoc.info/stdlib/core/1.9.2/Module:attr_accessor So, I don't know. Perhaps there is a difference in semantics between "create" and "define". -Justin