Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 当我运行此命令时,总和中有一个错误+=n语句,我不';我不知道如何修理它_Ruby - Fatal编程技术网

Ruby 当我运行此命令时,总和中有一个错误+=n语句,我不';我不知道如何修理它

Ruby 当我运行此命令时,总和中有一个错误+=n语句,我不';我不知道如何修理它,ruby,Ruby,错误: class Test def multiples (1..1000).each do |n| if n % 3 == 0 || n % 5 == 0 sum += n end puts "The sum of multiples of 3 or 5 below 1000 is #{sum}" end end end test = Test.new test.multiples test.rb:9:in`bloc

错误:

class Test
  def multiples
    (1..1000).each do |n|
      if n % 3 == 0 || n % 5 == 0
        sum += n
      end
      puts "The sum of multiples of 3 or 5 below 1000 is #{sum}"
    end
  end
end
test = Test.new
test.multiples
test.rb:9:in`block in multiples':nil:NilClass(nomethoderor)的未定义方法“+”
1000以下3或5的倍数之和为
来自测试。rb:7:in'each'
来自test.rb:7:in‘倍数’
来自测试。rb:19:in`'
from-e:1:in“load”
from-e:1:in`'

您尚未初始化sum,添加sum=0应可解决此问题:

test.rb:9:in `block in multiples': undefined method `+' for nil:NilClass (NoMethodError)
The sum of multiples of 3 or 5 below 1000 is 
    from test.rb:7:in `each'
    from test.rb:7:in `multiples'
    from test.rb:19:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

您尚未初始化sum,将sum=0相加应可解决此问题:

test.rb:9:in `block in multiples': undefined method `+' for nil:NilClass (NoMethodError)
The sum of multiples of 3 or 5 below 1000 is 
    from test.rb:7:in `each'
    from test.rb:7:in `multiples'
    from test.rb:19:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

我记得当我开始使用Ruby时,我并没有太多地观察错误消息,但您可能会发现学习如何阅读这些消息的价值。你有:

class Test
  def multiples
    sum = 0
    (1..1000).each do |n|
      if n % 3 == 0 || n % 5 == 0
        sum += n
      end
      puts "The sum of multiples of 3 or 5 below 1000 is #{sum}"
    end
  end
end
test = Test.new
test.multiples
这里只是简单地剖析一下显而易见的问题。您将获得以下部分:

  • test.rb-您的文件名
  • 9-发生故障的行号
  • 多次阻塞-存在一个有问题的阻塞 内部“倍数”
  • 未定义的方法“+”-记住一个+符号 实际上只是Ruby中的一个方法名,不同的方法是 可用于不同的变量类型。这是说没有 方法的名称为+,用于调用它的变量类型
  • nil-这是您刚才尝试调用+ 方法
  • 在该错误消息的第5个元素中,您应该思考“为什么
    sum
    当前
    nil
    ?”,然后环顾您的代码,发现您从未声明过它。Ruby不知道如何向
    nil
    添加内容,因此您应该立即考虑在循环之外的某个地方实例化/声明变量“sum”,即它正在向自身添加内容

    希望理解错误消息和出错原因能有所帮助。因为如果你不理解并思考错误信息,你会再次遇到障碍。这可能与您尝试通过向数组中铲入某些内容而不是首先实例化它来创建数组的时间大致相同,您想知道为什么会收到类似的错误消息


    希望这有帮助

    我记得当我开始使用Ruby时,我并没有太多地观察错误消息,但您可能会发现学习如何阅读这些消息的价值。你有:

    class Test
      def multiples
        sum = 0
        (1..1000).each do |n|
          if n % 3 == 0 || n % 5 == 0
            sum += n
          end
          puts "The sum of multiples of 3 or 5 below 1000 is #{sum}"
        end
      end
    end
    test = Test.new
    test.multiples
    
    这里只是简单地剖析一下显而易见的问题。您将获得以下部分:

  • test.rb-您的文件名
  • 9-发生故障的行号
  • 多次阻塞-存在一个有问题的阻塞 内部“倍数”
  • 未定义的方法“+”-记住一个+符号 实际上只是Ruby中的一个方法名,不同的方法是 可用于不同的变量类型。这是说没有 方法的名称为+,用于调用它的变量类型
  • nil-这是您刚才尝试调用+ 方法
  • 在该错误消息的第5个元素中,您应该思考“为什么
    sum
    当前
    nil
    ?”,然后环顾您的代码,发现您从未声明过它。Ruby不知道如何向
    nil
    添加内容,因此您应该立即考虑在循环之外的某个地方实例化/声明变量“sum”,即它正在向自身添加内容

    希望理解错误消息和出错原因能有所帮助。因为如果你不理解并思考错误信息,你会再次遇到障碍。这可能与您尝试通过向数组中铲入某些内容而不是首先实例化它来创建数组的时间大致相同,您想知道为什么会收到类似的错误消息


    希望这有帮助

    @Marc如果Yule的答案解决了你的问题,你对此感到满意,请投票并接受答案,thanks@Marc如果Yule的答案解决了您的问题,并且您对此感到满意,请投票并接受答案,谢谢Hanks~我想我不太明白Ruby中的工作原理。谢谢你提到+是一种方法,我以前没有注意到。这是一个很好的回答谢谢~我想我不太理解Ruby中的工作原理。感谢您提到+是一种方法,我以前没有注意到。这是一个精彩的答案