我有一个Word.rb文件
class Word
attr_accessor :word, :letters
def initialize (word)
#@word = word
@letters = word.split('').map{|letter| {:letter => letter, :hidden => true} }
end
end
和另一个文件Game.rb,它将使用Word.rb
require_relative ('./Word.rb')
require 'pry'
class Game
attr_accessor :guesses, :guessed_letters, :words, :current_word
def initialize (words)
@guesses = 0
@guessed_letters = []
@words = words
@current_word = current_word
end
end
我收到以下错误:
NameError:未初始化的常量游戏
当我尝试创建像这样的游戏实例时:
game = Game.new(['hello', 'sunshine', 'chipmunk', 'twitch'])
我只是不确定我做错了什么,因为我要求Word.rb
需要的Game.rb
文件。所有文件都在同一级别,子目录中没有任何内容。有趣的是,一旦我评论require_relative
行,我就不会收到此错误(但当然,我需要该文件)。我也尝试过不使用require_relative
并简单地使用require
以及其他几个变种:parens / no parens,文件扩展名/无文件扩展名等。如何正确地要求此文件?我还有一个可爱而强大的单词列在另一个文件中,我想要使用它并传递到Game.new()
。
答案 0 :(得分:0)
看看我做了什么
$ mkdir test
$ cd test
$ gedit Word.rb
# and copied your content and saved
$ gedit Game.rb
# and copied you content and saved
$ irb
在IRB会话运行后,我做了以下
2.1.1 :001 > game = Game.new(['asd'])
NameError: uninitialized constant Game
from (irb):1
from /home/shiva/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'
2.1.1 :002 > require 'game'
LoadError: cannot load such file -- game
2.1.1 :004 > require 'Game.rb'
LoadError: cannot load such file -- Game.rb
2.1.1 :005 > require './Game.rb'
=> true
2.1.1 :006 > game = Game.new(['shiva', 'bhusal'])
=> #<Game:0x00000003085428 @guesses=0, @guessed_letters=[], @words=["shiva", "bhusal"], @current_word=nil>
2.1.1 :007 >
试试这个