2017-01-09 57 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