Столкнулся с несколько неожиданной, да и неприятной, особенностью методов вида smth=
— к ним невозможно обратиться без указания объекта в контексте самого этого объекта, обязательно нужно указывать self.smth
, иначе происходит присваивание локальной переменной. Это касается как использования в методах того же объекта, так и в блоке, вызываемом через instance_eval()
. Ниже — поясняющий пример.
class Alpha attr_accessor :beta, :gamma def delta beta = :BETA self.gamma = :GAMMA end end a = Alpha.new a.beta = :beta a.gamma = :gamma a.delta p [a.beta, a.gamma]
Выведет следующее:
[:beta, :GAMMA]
Т.е. атрибут beta
не обновился.
Комментариев нет:
Отправить комментарий