The*_*ilz 8 ruby ruby-on-rails rubymine ruby-on-rails-3 rubymine-7
我在RubyMine中有这两个类:
book.rb
class Book
def initialize(name,author)
end
end
Run Code Online (Sandbox Code Playgroud)
test.rb
require 'book'
class teste
harry_potter = Book.new("Harry Potter", "JK")
end
Run Code Online (Sandbox Code Playgroud)
当我运行test.rb时,我收到此错误:C:/Users/DESKTOP/RubymineProjects/learning/test.rb:3:in'from <class:Test>': uninitialized constant Test::Book (NameError)
from C:/Users/DESKTOP/RubymineProjects/learning/test.rb:1:in-e:1:in load'
from -e:1:in'
sma*_*thy 18
您收到错误是因为您的require 'book'行要求其他book.rb地方的其他人,而不是定义Book类.
Ruby不会自动将当前目录包含在它将搜索的目录列表中,require因此./如果要在当前目录中需要文件,则应显式地添加一个目录,即.
require './book'
Run Code Online (Sandbox Code Playgroud)
您已经定义了初始化方法,但忘记将值分配给实例变量,并且代码中的拼写错误触发了错误,将其修复为:
book.rb
class Book
def initialize(name,author)
@name = name
@author = author
end
end
Run Code Online (Sandbox Code Playgroud)
test.rb
require './book'
class Test
harry_potter = Book.new("Harry Potter", "JK")
end
Run Code Online (Sandbox Code Playgroud)
那么,您关注哪本书或资源?我认为你至少应该完成一本书,以获得关于Ruby和面向对象编程的正确知识.我会建议你开始使用'The Book of Ruby'.
在 Rails 应用程序中,此错误也可能是由于重命名类而没有重命名文件以匹配而引起的,这是我发现此错误时遇到的问题:
书.rb
class Book
def initialize(name, author)
end
end
Run Code Online (Sandbox Code Playgroud)
书测试.rb
class BookTest
harry_potter = Book.new("Harry Potter", "JK")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42358 次 |
| 最近记录: |