A
/*
*
*/
Size: a a a
A
A
PM
AI
VM
class AКогда я вызову метод
def initialize
@a = 0
end
def b
a = a + 1
puts a
end
def a
@a
end
def a=(v)
@a = v
end
end
A.new.b
, то упадет ошибкаNoMethodError: undefined method `+' for nil:NilClass
a
, которая ровна nil и потом падает ошибка при a = a + 1
.def a=(v)
?В
SP
class AКогда я вызову метод
def initialize
@a = 0
end
def b
a = a + 1
puts a
end
def a
@a
end
def a=(v)
@a = v
end
end
A.new.b
, то упадет ошибкаNoMethodError: undefined method `+' for nil:NilClass
a
, которая ровна nil и потом падает ошибка при a = a + 1
.def a=(v)
?a + 1
где там обращение к сеттеру?В
В
VM
a + 1
где там обращение к сеттеру?def a=
сетер обявленый чуть нижеВ
VM
SP
def a=
сетер обявленый чуть нижеa + 1
к нему нет обращенияVM
a + 1
к нему нет обращенияa + 1
, a это уже новая локальная переменая, которая создалась при вызове a =
В
VM
VM
VM