我有一个代码如下:
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:在''****
有任何想法吗?
你不能在另一个范围内使用像这样的局部变量,例如方法,它是两个不同的上下文.相反,如果你想使用它,你需要传递它.
这是一个简单的改变:
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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           69 次  |  
        
|   最近记录:  |