需要访问另一个文件中的 var,不知道该怎么做

Need access to a var in another file, not sure how to do it

我正在创建一个刽子手游戏,目前只能在 pry/terminal 中玩。我有 4 个文件:

words_array.rb - 大字数组

words.rb-字class

game.rb - 游戏class

main.rb - 使用 words/game 中的方法并玩游戏

在我的 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

我的问题是,在需要撬动我的所有文件后,它们似乎都已成功加载(包括 words_array.rb),当它点击/游戏时出现错误 = 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 中。为什么它不识别它,或者如果我想在 main.rb 文件中使用它,除了需要撬动它之外我还应该做些什么?

谢谢!

您收到此错误是因为 some_words 超出了您调用它的程序的范围。仅仅因为您需要 words_array.rb 文件并不意味着 some_words 变量在范围内并且可以访问。你应该 post 你的 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)