Скажем, что у нас есть этот класс:
class Hello
def hello
@hello
end
def hello=(hello)
@hello = hello
end
def other_method
hello = 'hi!'
...
end
end
В этом случае
h = Hello.new
h.other_method
puts h.hello
напишет "привет!" Из-за интерпретации hello =
как self.hello =
.Есть ли способ избежать такого поведения, предоставив объявлению hello =
локальную область метода (как, например, var hello =
будет делать с кодом JavaScript)?
EDIT Извините, я был уверен, что у меня возникла проблема по этой причине!Но теперь у меня есть еще два вопроса!
почему hello =
не интерпретируется как self.hello =
???он объявлен как метод экземпляра ...
почему, даже если я напишу
<code>...
def other_method
self.hello = 'hi!'
end
end
h = Hello.new
h.other_method
puts h.hello
, он возвращает
nil
???теперь это должно быть явное задание!
Спасибо за терпение, я немного растерялся!: - /