当前位置 : 主页 > 编程语言 > ruby >

如何在Ruby中将子类变量返回到父类中

来源:互联网 收集:自由互联 发布时间:2021-06-23
我想创建一个基类来处理所有方法.在这种情况下,如何使用 ruby实现这一目标? class Dog def initialize @breed = "good breed" end def show_dog puts "#{self.class.first_name} of breed #{@breed}" endendclass Lab Dog a
我想创建一个基类来处理所有方法.在这种情况下,如何使用 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

预期的结果将是“品种良种的好狗”
先感谢您 :)

> self.class.first_name不会执行您可能想要执行的操作.您需要直接使用@first_name.
>您需要从子类调用父类的构造函数;它不是自动调用的.

这有效:

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
网友评论