ruby - 在 Ruby 中对多个文件使用继承

标签 ruby

我是 Ruby 新手。我对在 Ruby 中使用继承有疑问。

我在名为 Doggy.rb 的文件中有一个名为 Doggy 的类

class Doggy
  def bark
    puts "Vicky is barking"
  end
end

我在另一个名为 puppy.rb 的文件中编写了另一个名为 Puppy 的类

class Puppy < Doggy
end

puts Doggy.new.bark

我收到这个错误:

Puppy.rb:1:in `<main>': uninitialized constant Doggy (NameError)

是否必须将这些类(Doggy 和 Puppy)放在一个文件中?

已编辑

根据建议,我已尝试使用 require 和 require_relative,如图所示,但我仍然低于错误

Puppy.rb:1:in `<main>': uninitialized constant Doggy (NameError)

    class Puppy < Doggy
    end
    require_relative 'Doggy.rb'
    puts Doggy.new.bark

最佳答案

要在puppy.rb 文件中完成的更改
假设这两个文件都在同一个目录中,您需要按以下方式获取该文件:

小狗.rb

class Doggy
  def bark
    puts "Vicky is barking"
  end
end

小狗.rb

require File.expand_path('../doggy.rb', __FILE__)
class Puppy < Doggy
end

puts Doggy.new.bark

关于ruby - 在 Ruby 中对多个文件使用继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337625/

相关文章:

ruby - 在 Formtastic 操作链接中指定 HTML 方法

ruby - 使用 TK GUI 滚动滚动条

ruby-on-rails - ruby rails : models that do not have a table

ruby - 无法加载此类文件 -- smarter_csv (LoadError)

ruby-on-rails - Rails Select Drop Down for States?

ruby-on-rails - 带有 chargify 的 cucumber 功能示例

ruby-on-rails - 如何呈现 json : in all controller actions Rails 4. 2.1

ruby-on-rails - 从 Virtus.model 动态扩展时使用 boolean 属性辅助方法

ruby-on-rails - 冗余嵌套重复运算符

ruby - File.exists?() 在应该为真时返回 false?