在Ruby OOP中访问实例变量

时间:2015-09-05 10:22:13

标签: ruby oop

我正在学习Ruby OOP并且遇到了以下问题。

  

我们可以在下面的类中添加什么来访问实例变量   @volume?

class Cube
  def initialize(volume)
    @volume = volume
  end
end

我最初的想法是添加attr_reader :volume来访问实例变量。

相反,模型答案建议添加一个新方法,如下所示。

def get_volume
  @volume
end

为什么这是首选方法? 如果cube.volumecube.get_volume被调用,则两种方法都会输出100。

4 个答案:

答案 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​​ 中避免使用。