【问题标题】:how to get child class variable back into parent class in ruby如何将子类变量返回到ruby中的父类
【发布时间】:2013-03-28 10:07:57
【问题描述】:

我想创建一个基类来处理所有方法。在这种情况下,我将如何使用 ruby​​ 实现这一目标?

class Dog
  def initialize
    @breed = "good breed"
  end

  def show_dog
    puts "#{self.class.first_name} of breed #{@breed}"
  end
end

class Lab < Dog

  attr_reader :first_name
  def initialize
    @first_name = "good dog"
  end
end

lb = Lab.new()
lb.show_dog

预期的结果是“好品种好品种的好狗” 提前谢谢你:)

【问题讨论】:

  • 对于 ruby​​,您只需要执行 first_name 即可调用 first_name 方法 - 在某些情况下,它不像 C++,您需要明确说明要调用的 first_name 的实现。 self.class.first_name 尝试调用名为 first_name 的类方法。

标签: ruby class inheritance


【解决方案1】:
  1. self.class.first_name 没有做你可能想做的事情。您需要直接使用@first_name

  2. 需要从子类调用父类的构造函数;它不会自动调用。

这行得通:

class Dog
  def initialize
    @breed = "good breed"
  end

  def show_dog
    puts "#{@first_name} of breed #{@breed}" ### <- Changed
  end
end

class Lab < Dog

  attr_reader :first_name
  def initialize
    super ### <- Added
    @first_name = "good dog"
  end
end

lb = Lab.new()
lb.show_dog

【讨论】:

  • 谢谢@Dogbert,正是我想要的。
【解决方案2】:

self.class.first_name 表示Lab.first_name,而不是Lab 的实例lb.first_name

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多