2012-09-01 87 views
1
def pregunta 
    reply = gets.chomp.downcase 
    if reply == 'si' 
     puts 'Correcto' 
    end 

    if reply == 'no' 
     puts 'Incorrecto' 
    end 
end 

pregunta 'alfkjdasñlfj?' 

當我提出一個問題(「pregunta」是英文問題)後,當我輸入一個答案時(「si」,程序應該告訴我我是正確的還是錯誤的「 或沒有」)。我得到一個「ArgumentError」,而不是得到答案。我究竟做錯了什麼?我在做這個Ruby代碼時犯了什麼錯誤?

我使用Ruby 1.9.3-P194

+2

請使標題與問題有關..(也,你的方法不採取任何參數;注意*當發生錯誤時) – 2012-09-01 00:21:38

+0

(提示:這是一個最小失敗案例:'def x; end; x「foo」'注意*當發生錯誤時,請閱讀完整消息。 – 2012-09-01 00:24:34

回答

1

你不是在傳遞一個值,函數調用,你從終端閱讀。調用函數,然後然後輸入你的字符串。

pregunta 
si 
Correcto 
=> nil 
1

您的方法聲明中沒有任何參數。

你需要這樣的: '?alfkjdasñlfj'

def pregunta(foo) 
    if foo == 'bar' 
     true 
    end 
end 
1

要調用pregunta但該方法沒有任何爭論。

def pregunta(answer) 
    reply = answer.chomp.downcase 
    if reply == 'si' 
     puts 'Correcto' 
    end 

    if reply == 'no' 
     puts 'Incorrecto' 
    end 
end 

pregunta gets 

也許?

2

pregunta不接受參數,但你反正通過一個參數。我可能是錯的,但不是你想要做的這樣的事情:

def pregunta(preg) 
    puts preg 
    reply = gets.chomp.downcase 
    if reply == 'si' 
     puts 'Correcto' 
    end 

    if reply == 'no' 
     puts 'Incorrecto' 
    end 
end