1

次のように、クラス A から派生したクラス B があります。

class A
..
end

class B < A
...
end

別のファイルで、変数 M を定義しました

M = B

その後、エラーが発生しました

"NameError: uninitialized constant B".

私が書いた場合、私はちょうどそれを見つけました

M=A
M=B

それなら大丈夫です。何らかの方法で A を初期化する必要があるようです。

4

1 に答える 1

0

ファイルはレールとは関係がないため、システム上の任意のフォルダーにある 2 つの別個のファイルであると想定できます。それらが同じディレクトリにあると仮定します。

class_def.rb:

class A
  def self.talk
    puts 'hello'
  end
end

class B < A
  def self.talk
    super()
    puts 'world'
  end
end

ランナー.rb:

require './class_def.rb'
M=B
M.talk

ruby runner.rb を呼び出すと、出力が生成されるはずです

hello
world

ただし、RubyFiddle を使用して同じエラーに気付きました

メソッドへの呼び出し付きhttp://rubyfiddle.com/riddles/1d8e2

メソッドへの呼び出しなし http://rubyfiddle.com/riddles/1d8e2/

于 2013-03-12T18:28:44.887 に答える