Я понимаю, что когда мы определяем переменный класс рубина он предшествует @@variableName
, но в этом кодеЧто такое переменная в классе?
class Hello
@var2
@@var3=0
def foo1
return @var1
end
def set_foo1(par1)
@var1=par1
end
end
Я понимаю, что var3 является переменным классом и должен быть инициализирован с некоторым значением. Но как насчет var2? Является ли var2 по-прежнему соответствовать объекту?
Когда я назвал программу с obj1.var2=100
я получаю noMethodError
Кроме того, когда я называю путы Hello.var3
я получить тот же noMethodError
Может кто-нибудь пожалуйста, объяснить, где я получаю это неправильно?
'@ var2' - это переменная экземпляра, а' @@ var3' - это переменная класса. Если вы хотите получить доступ к ним из-за пределов определения класса, вам нужны геттеры/сеттеры. * Например, внутри 'class Hello',' def var2 @ var2 end' и т. Д. – lurker
Итак, чтобы получить доступ к этим переменным, нам нужно получить к ним доступ только через функцию? – SeasonalShot
Делает ИДЕАЛЬНОЕ чувство. Благодарю. – SeasonalShot