2017-01-09 56 views
0

我具有低于代码:红宝石未定义可变

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) 

当我试图运行上述程序它显示如下:

****未定义局部变量或方法secret_number' for main:Object (repl):211:in number_guesser” ( REPL):221:在`'****

任何想法?

回答

6

不能使用这样的内部另一范围的局部变量,如法,这是两个不同的上下文。相反,你需要通过在,如果你想使用它。

这是一个简单的变化:

def number_guesser(user_input, secret_number) 
    # ... 
end 

然后只给该参数中

您会注意到,user_input不是作为一个参数确有必要,可以随时初始化和使用本地,所以它是作为一个参数实际上毫无意义。

模式在这种情况下使用:

loop do 
    input = gets.chomp 

    # Prompting... 

    break if input == secret_number 

    # Guessed wrong... 
end 
+0

此外,'secret_number'是一个整数,而'input'是一个字符串,所以你必须将一个或另一个。 – Stefan