需要访问另一个文件中的var,不知道如何操作

时间:2015-07-25 21:57:32

标签: ruby pry

我正在创建一个刽子手游戏,此时只会在pry / terminal中播放。我有4个文件:

words_array.rb - 大字数组

words.rb- word class

game.rb - 游戏类

main.rb - 使用单词/游戏中的方法并玩游戏

在我的main.rb文件中,我调用了一个新游戏。它需要一组单词的arg。

    require 'pry'
    require_relative ('./words_array.rb') 
    require_relative ('./word.rb') 
    require_relative ('./game.rb') 

    game = Game.new(some_words)

    game.start_game

    while !@game.over?
        puts "Please guess a letter"
        user_letter = gets.chomp
        game.guess(user_letter)

            if game.over?
                game.over_message
            end

        game.render
    end

   binding.pry

我的问题是,在要求我的所有文件都在pry中,并且它们似乎都成功加载(包括words_array.rb)我遇到错误,当它击中/ game = Game.new(some_words)/告诉我some_words未定义

main.rb:7:in `<main>': undefined local variable or method `some_words' for main:Object (NameError)

some_words是words_array.rb文件中的单词数组(也是唯一的单词),它已成功加载到pry中。为什么它不能识别它,或者除了要求它在pry中,如果我想在main.rb文件中使用它,我还应该做些什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您收到此错误是因为some_words超出了您调用它的程序的范围。仅仅因为您需要words_array.rb文件并不意味着some_words变量在范围内且可访问。您应该发布words_array.rb文件的开头,显示您如何定义它。只要留下巨大的单词列表。

您在文件中使用模块吗?

Module GameWords
  WORDS = %w(dog cat chair ....
end

然后当你require 'words_array'时,你可以通过调用来获取数组:

game = Game.new(GameWords::WORDS)
  # returns ['dog', 'cat', 'chair'....

你可以使用常量做一个更简单的形式:

你的words_array.rb可以是:

WORDS = %w(dog cat chair ....

你可以像以下一样使用它:

game = Game.new(WORDS)
相关问题