【问题标题】:What is the right way to initialize an object that invoke an instance method of its mother?初始化调用其母亲实例方法的对象的正确方法是什么?
【发布时间】:2011-09-30 03:04:27
【问题描述】:

问题与标题相同。假设我有一个简单的例子:

class Vehicle
  attr_accessor :wheels
end

class Car < Vehicle
  def initialize
    self.wheels = 4
  end
end

class Truck < Vehicle
  def initialize
    @wheels = 16
  end
end

我很好奇哪种方式被认为是正确的或更好的调用 wheels妈妈的作家方法Vehicle?

【问题讨论】:

    标签: ruby oop inheritance attributes instance-methods


    【解决方案1】:

    self.wheels = 4 更灵活,因为它在后台调用了一个 setter 方法:self.wheels=(4)

    因此,如果您想在将值放入 @wheels 之前对其进行处理,您可以定义该函数:

    def wheels=(val)
      # do something
      @wheels = new_val
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多