我是 Ruby 的新手。我有一个关于在 Ruby 中使用继承的问题。
我在名为 Doggy.rb 的文件中有一个名为 Doggy 的类
class Doggy
def bark
puts "Vicky is barking"
end
end
Run Code Online (Sandbox Code Playgroud)
我在另一个名为 puppy.rb 的文件中编写了另一个名为 Puppy 的类
class Puppy < Doggy
end
puts Doggy.new.bark
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Puppy.rb:1:in `<main>': uninitialized constant Doggy (NameError)
Run Code Online (Sandbox Code Playgroud)
是否必须将这些类(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
Run Code Online (Sandbox Code Playgroud)
您应该Doggy从文件 where Puppyis 中要求包含类的文件。放
require './doggy'
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是 ruby-1.9:
require_relative 'doggy'
Run Code Online (Sandbox Code Playgroud)
in puppy.rb(假设文件名是 doggy.rb 和 puppy.rb)。
要在puppy.rb中完成的更改需要按以下方式使用该文件。假设你有两个文件在同一个目录中。
狗
class Doggy
def bark
puts "Vicky is barking"
end
end
Run Code Online (Sandbox Code Playgroud)
小狗.rb
require File.expand_path('../doggy.rb', __FILE__)
class Puppy < Doggy
end
puts Doggy.new.bark
Run Code Online (Sandbox Code Playgroud)