【发布时间】:2012-01-05 03:50:55
【问题描述】:
我刚刚学习编程并决定尝试 Ruby。我敢肯定这是一个愚蠢的问题,但是讲师正在谈论 setter 和 getter 方法,我很困惑。示例如下:
class Human
def noise=(noise)
@noise = noise
end
def noise
@noise
end
end
由此,类被实例化,我可以把它说出来:
man = Human.new
man.noise=("Howdie!")
puts man.noise
这导致Howdie!
现在让我感到困惑的是,讲师说没有 getter 方法(两种方法中的第 2 种),就无法与实例变量 @noise 进行交互。
但是当我删除 getter 方法时,我仍然可以访问@noise,参见示例:
class Human
def noise=(noise)
@noise = noise
end
end
man = Human.new
puts man.noise=("Howdie!")
这与它使用的 getter 方法相同。
所以现在我很困惑。为什么需要吸气剂?没有它就无法访问实例变量是什么意思?有没有可能他使用的是旧版本的 Ruby?
提前感谢您的帮助。
【问题讨论】:
-
你真的能够访问@noise,或者你看到的是你正在调用的函数的副作用......
标签: ruby