2012-09-01 107 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