0
をインスタンス化しようとすると、私はエラーを受信していたときに初期化されていない一定のエラーを取得:新しいクラス
lynda.rb:206:in `<main>': uninitialized constant Pig (NameError)
を私は豚クラスの新しいインスタンスをインスタンス化しようとします。なぜこのエラーが出るのか誰にも分かりますか?私はオンラインで検索しましたが、通常、あなたの親クラスを正しく必要としないためです。しかし、私の親クラスは同じファイル内にあります。
class Animal
attr_accessor :name
attr_writer :colour
attr_reader :legs, :arms
def initialize(noise,legs=4,arms=0)
@noise = noise
@legs = legs
@arms = arms
puts "A new animal has been instantiated"
end
def noise=(noise)
@noise = noise
end
def noise
@noise
end
class Pig < Animal
def noise
parent_method = super
puts "Hello and #{parent_method}"
end
end
class Cow < Animal
end
end
piggy = Pig.new("oink")
p piggy.noise
Ahh参照してください。私は両方の方法を試しました。ありがとう、私はRubyがあなたが指定しなければPigサブクラスを見つける場所を知らないことに気づいたことはありません。とても有難い。 –
ジャック、どこにサブクラスを見つけるのか分からないことはあまりありません。サブクラスの問題は赤いニシンです。それは、あなたのPigクラスがAnimalクラスの中に入っていることです(そして、ファイルではなく_class_を意味します)。たとえあなたがAnimalを閉じる前にPigを開いただけで、PigがAnimalのサブクラスではなかったとしても、あなたは同じ問題に遭遇していました。 – philomory