Môže mi niekto povedať, prečo to nefunguje:
class A
attr_accessor :b
end
a = A.new
a.instance_eval do
b = 2
end
a.b
=> nil
Čo robím zle?
odpovede:
6 pre odpoveď č. 1Vinník leží v tejto časti kódu:
a.instance_eval do
b = 2
end
Hoci b = 2
sa hodnotí v kontexte vašej inštancie, nevolá nastavovač. Namiesto toho iba vytvára novú miestnu premennú s názvom b
v súčasnom rozsahu. Ak chcete zavolať nastavovači, musíte ďalej objasniť svoj kód, aby ste vyriešili nejasnosti:
a.instance_eval do
self.b = 2
end
0 pre odpoveď č. 2
Zmena:
a.instance_eval do
self.b = 2
end