加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:25:42 所属栏目:百科 来源:网络整理
导读:我想创建一个基类来处理所有方法.在这种情况下,如何使用 ruby实现这一目标? class Dog def initialize @breed = "good breed" end def show_dog puts "#{self.class.first_name} of breed #{@breed}" endendclass Lab Dog attr_reader :first_name def init
我想创建一个基类来处理所有方法.在这种情况下,如何使用 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读