【问题标题】:What am I doing wrong in this Ruby code?我在这个 Ruby 代码中做错了什么?
【发布时间】:2012-09-01 00:15:04
【问题描述】:
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 1.9.3-p194

【问题讨论】:

  • 请使标题与问题相关..(另外,您的方法不带任何参数;注意何时发生错误)
  • (提示:这是一个最小的失败案例:def x; end; x "foo"。请注意何时发生错误并阅读完整消息。)

标签: ruby


【解决方案1】:

pregunta 不带参数,但无论如何你都会传递一个参数。我可能是错的,但不是你想要做的这样的事情:

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

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

【讨论】:

    【解决方案2】:

    您没有将值传递给函数调用,而是从终端读取它。调用函数并然后输入你的字符串。

    pregunta
    si
    Correcto
    => nil
    

    【讨论】:

      【解决方案3】:

      您的方法声明中没有任何参数。

      你需要这样的东西:

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

      【讨论】:

        【解决方案4】:

        你叫 pregunta 'alfkjdasñlfj?'但该方法没有参数。

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

        也许?

        【讨论】:

          猜你喜欢
          • 2015-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-24
          • 2013-01-11
          • 2015-04-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多