【发布时间】:2019-03-17 14:02:06
【问题描述】:
我有以下例子:
class A
@Values = {}
def initialize()
@Values.each{ |_key, _val|
puts("Key: #{_key}, Val: #{_val}")
}
end
end
class B < A
@Values = { "Test1": "1", "Test2": "2"}
def initialize()
super()
end
end
我的问题:
B.new()
不创建输出 - 所以来自 B 类的 @Values 在 A 类中不可用。为什么?如何访问它们?
========= 更新========= 谢谢您的回答!
@Mosab Muhammad:是的 - 我真的不确定何时使用 {} 以及何时使用 do end ...我会看看两者何时使用。
{}(通常用于单行块)或 do..end(用于 多行块)。
没错 - 我读到这样做是一种铁路惯例,但还有更多 - {} 并且确实表现不同。
@@ 是一个选项,但我认为编辑类变量不是一个好主意 - 正如您所提到的,它可能会产生非常讨厌的副作用。
@Aleksei Matiushkin - 谢谢!我将查看 self.class.instance_variable_get 并查看它的行为方式以及它是否能解决我的问题!
非常感谢!
【问题讨论】:
-
嗨。如果一些答案有帮助,张贴者将不胜感激。接受最佳答案将不胜感激。
标签: ruby class inheritance instance-variables