Ruby instance_eval w klasie z attr_accessor

Rozumiem podstawową różnicę międzyinstance_eval iclass_eval. To, co odkryłem podczas zabawy, jest czymś dziwnymattr_accessor. Oto przykład:

A = Class.new
A.class_eval{ attr_accessor :x }

a = A.new
a.x = "x"
a.x
=> "x"  # ... expected

A.instance_eval{ attr_accessor :y }

A.y = "y"
=> NoMethodError: undefined method `y=' for A:Class

a.y = "y"
=> "y"      # WHATTT?

Jak to się dzieje, że:

wartość elementu instance_eval nie była w dostępie do naszej klasy A (obiektu)to faktycznie dodało to do instancji A?

questionAnswers(4)

yourAnswerToTheQuestion