13

RubyMine には次の 2 つのクラスがあります。

book.rb:

 class Book
   def initialize(name,author)
   end
 end

test.rb:

require 'book'
class teste
   harry_potter = Book.new("Harry Potter", "JK")
end

を実行するtest.rbと、次のエラーが表示されます。

C:/Users/DESKTOP/RubymineProjects/learning/test.rb:3:in `<class:Test>': uninitialized constant Test::Book (NameError)
from C:/Users/DESKTOP/RubymineProjects/learning/test.rb:1:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
4

3 に答える 3

23

行がクラスを定義していない他の場所からrequire 'book'他のものを必要としているため、エラーが発生しています。book.rbBook

requireRuby は を検索するディレクトリのリストに現在のディレクトリを自動的に含めません./

require './book'
于 2015-03-18T21:51:51.613 に答える
9

初期化メソッドを定義しましたが、値をインスタンス変数に割り当てるのを忘れており、コードのタイプミスによりエラーが発生しました。次のように修正しました。

book.rb

class Book
  def initialize(name,author)
    @name = name
    @author = author
  end
end

test.rb

require './book'
class Test
  harry_potter = Book.new("Harry Potter", "JK")
end

では、どの本またはリソースをフォローしていますか? Ruby とオブジェクト指向プログラミングの適切な知識を得るには、少なくとも本を一冊は完成させるべきだと思います。手始めに「The Book of Ruby」をお勧めします。

于 2015-03-18T21:31:08.050 に答える