我正在学习Ruby OOP并且遇到了以下问题。
我们可以在下面的类中添加什么来访问实例变量 @volume?
class Cube
def initialize(volume)
@volume = volume
end
end
我最初的想法是添加attr_reader :volume
来访问实例变量。
相反,模型答案建议添加一个新方法,如下所示。
def get_volume
@volume
end
为什么这是首选方法?
如果cube.volume
或cube.get_volume
被调用,则两种方法都会输出100。
答案 0 :(得分:4)
attr_reader
。通常,在Ruby社区中避免使用带有get_
前缀的方法(与Java / C#代码中常见的相反)
答案 1 :(得分:0)
如果它是动态创建的变量,那么您可以使用instance_vairable_get
,如下所示 -
instance_variable_get("@volume")
答案 2 :(得分:0)
由于需要获取变量.toFloat()
,因此建议使用volume
。这样会创建一个代理方法attr_reader :volume
,因此无需为此单独添加(以后必须维护)一个额外的方法volume
。
https://ruby-doc.org/core-2.1.1/Module.html#method-i-attr_reader
答案 3 :(得分:0)
您应该使用 attr_reader :volume 而不是使用 get_volume 方法。 Stil attr_reader 和你的方法 get_volume 都运行相同。 通常 get_ 方法应该在 ruby 中避免使用。