Ruby:在设置属性时自动调用方法

时间:2017-01-12 23:05:24

标签: ruby class properties

我是Ruby新手,更常见的是面向对象编程。

我认为我想要的只是this的Ruby翻译。也就是说,我希望能够初始化类的实例,然后一旦设置了某个属性,就在其上调用一个方法来转换它。

例如,假设我有一个具有温度属性的Weather类,我希望它在设置后立即从华氏温度转换为摄氏温度。这是我希望这样做的方式。

today = Weather.new
today.temp = 32
today.temp     # => 0

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以编写自己的attr_writer - 样式方法来完成此任务。如果不清楚,请随意发表评论。

class Weather
  attr_reader :temp
  def temp=(val)
    @temp = f_to_c(val)
  end
  def f_to_c(temp)
    (temp - 32).to_f * (5.0 / 9.0) 
  end
end