NameError:未初始化的常量游戏

时间:2015-07-25 01:12:38

标签: ruby

我有一个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()

1 个答案:

答案 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 >

试试这个