Ruby未定义的变量

Kev*_*Cai 0 ruby

我有一个代码如下:

secret_number = 8
user_input = ""

def number_guesser(user_input)
  while user_input != secret_number
    puts "Guess a number between 1 and 10:"
    user_input = gets.chomp

    if user_input != secret_number
      puts "Wrong! Try again."
    else
      puts "You guessed correctly!"
    end
  end
end

number_guesser(user_input)
Run Code Online (Sandbox Code Playgroud)

当我试图运行上面的程序时,它显示如下:

****未定义的局部变量或方法secret_number' for main:Object (repl):211:innumber_guesser'(repl):221:在''****

有任何想法吗?

tad*_*man 5

你不能在另一个范围内使用像这样的局部变量,例如方法,它是两个不同的上下文.相反,如果你想使用它,你需要传递它.

这是一个简单的改变:

def number_guesser(user_input, secret_number)
  # ...
end
Run Code Online (Sandbox Code Playgroud)

然后只需输入该参数.

你会注意到user_input作为一个参数并不是必需的,你总是可以在本地初始化和使用它,所以它作为一个参数实际上是毫无意义的.

在这种情况下使用的模式:

loop do
  input = gets.chomp

  # Prompting...

  break if input == secret_number

  # Guessed wrong...
end
Run Code Online (Sandbox Code Playgroud)