Я изучаю Ruby прямо сейчас, и я смущен тем, почему я могу ссылаться на переменную экземпляра без @sigil, что также сделает ее локальной. Разумеется, следующий код не должен работать так:
class Test
attr_accessor :variable
def something
variable
end
def something2
@variable
end
def something3
self.variable
end
end
y = Test.new
y.variable = 10
puts y.something # => 10
puts y.something2 # => 10
puts y.something3 # => 10
Я бы ожидал, что y.something
вернет нуль. Почему локальные переменные и переменные экземпляра указывают на одно и то же местоположение? Я бы ожидал, что @variable
и variable
будут двумя дискретными переменными.