Ruby class 中未初始化的常量错误
Uninitialized constant error in Ruby class
我在 RubyMine 中有这两个 类:
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>'
您已经定义了初始化方法,但忘记将值赋给实例变量,并且代码中的拼写错误触发了错误,已将其修复为:
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' 开始。
您收到错误是因为您的 require 'book'
行需要来自其他地方的一些其他 book.rb
,它没有定义 Book
class。
Ruby 不会自动将当前目录包含在它会搜索 require
的目录列表中,因此如果您需要一个文件,您应该明确地在前面加上 ./
在当前目录中,即。
require './book'
在 Rails 应用程序中,此错误也可能是由于重命名 class 而未重命名要匹配的文件引起的,这是我发现此错误时的问题:
book.rb
class Book
def initialize(name, author)
end
end
book_test.rb
class BookTest
harry_potter = Book.new("Harry Potter", "JK")
end
我在 RubyMine 中有这两个 类:
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>'
您已经定义了初始化方法,但忘记将值赋给实例变量,并且代码中的拼写错误触发了错误,已将其修复为:
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' 开始。
您收到错误是因为您的 require 'book'
行需要来自其他地方的一些其他 book.rb
,它没有定义 Book
class。
Ruby 不会自动将当前目录包含在它会搜索 require
的目录列表中,因此如果您需要一个文件,您应该明确地在前面加上 ./
在当前目录中,即。
require './book'
在 Rails 应用程序中,此错误也可能是由于重命名 class 而未重命名要匹配的文件引起的,这是我发现此错误时的问题:
book.rb
class Book
def initialize(name, author)
end
end
book_test.rb
class BookTest
harry_potter = Book.new("Harry Potter", "JK")
end