【问题标题】:Accessing instance variables in Ruby OOP在 Ruby OOP 中访问实例变量
【发布时间】:2015-12-01 10:24:20
【问题描述】:

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

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

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

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

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

def get_volume
  @volume
end

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

【问题讨论】:

  • 你从中学习的资源是废话。

标签: ruby oop


【解决方案1】:

attr_reader。在 Ruby 社区中,一般会避免使用带有 get_ 前缀的方法(与 Java/C# 代码中常见的相反)

【讨论】:

  • 是的,和你想的完全一样。
【解决方案2】:

如果是动态创建的变量,则可以使用instance_vairable_get,如下图-

instance_variable_get("@volume") 

【讨论】:

    【解决方案3】:

    由于想要获取变量volume,我建议使用attr_reader :volume。这将创建一个代理方法 volume,因此无需为此添加(并且以后必须维护)额外的方法 get_volume

    https://ruby-doc.org/core-2.1.1/Module.html#method-i-attr_reader

    【讨论】:

      【解决方案4】:

      您应该使用 attr_reader :volume 而不是使用 get_volume 方法。 Stil attr_reader 和您的方法 get_volume 都运行相同。 通常,在 ruby​​ 中应避免使用 get_ 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 2014-12-03
        • 2017-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多