我猜想是一些Ruby内部元素
|
class MyClass
def instance_variable=(var)
puts \"inside getter\"
instance_variable = var
end
def function_1
self.instance_variable = \"whatever\"
end
def function_2
@instance_variable = \"whatever\"
end
end
myclass = MyClass.new
myclass.function1
控制台上带有“内部吸气剂”的结果
myclass.function2
才不是。
我是Ruby的新手,不知道区别,无法在网络上找到它...
提前致谢!
编辑:
我假定通过附加\“ = \”,我为隐式定义的实例变量\“ instance_variable。\”覆盖了getter方法。
这也是我这么称呼它的原因。
Im过去不允许在函数名称中使用\“ = \”。
这就是为什么我认为它会有一些特殊的含义。
谢谢你的帮助。
编辑2:
我只是以为我真的覆盖了作业,而不仅是getter。我把这一切弄混了。
对不起,谢谢。
没有找到相关结果
已邀请:
1 个回复
梦砍废么
。它不是实例变量,而是一种设置实例变量的方法。 当您调用
时,您正在调用该方法。直接设置ѭ4you时,就是设置变量本身,这就是为什么不调用setter方法的原因。 更惯用的命名约定如下所示:
当然,对于简单的传递型获取器和设置器,您可以使用
上面的方法是语法糖,可以为您生成get和/或set方法。如果需要,以后可以覆盖它们以提供其他功能。 编辑:我看到您进行了更新,只是想指出此方法根本不设置实例变量:
在这种情况下,“ 2”只是一个局部变量,方法退出后将立即将其丢弃。局部变量优先于实例方法,并且实例变量始终以“ 9”符号开头。