本文介绍了未定义的方法“+@"为 false:FalseClass (NoMethodError) ruby的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

def next_prime_number (last_known_prime)
  while true
    last_known_prime++

    found_factor = false # ERROR
    for i in 1...last_known_prime
      if last_known_prime % i == 0
        found_factor = true
        break
      end
    end
    if !found_factor
      puts "new prime: #{last_known_prime}"
      Kernel.exit
    end
  end
end

in `next_prime_number': undefined method `+@' for false:FalseClass (NoMethodError)

我遇到了上述错误并且完全被难住了.任何想法(不,这不是作业,我正在尝试通过 Euler 项目自学 Ruby).

I'm getting the above error and am totally stumped. Any ideas (no, this is not homework, I am trying to teach myself Ruby through the Euler Project).

推荐答案

正如 mikej 所说,ruby 中没有后增量 (++) 运算符.但是,有一元加号(定义时拼写为 +@)

As mikej said, there is no post-increment (++) operator in ruby. There is however, a unary plus (spelled +@ when defining it)

last_known_prime++

found_factor = false

被解析为类似

last_known_prime + (+(found_factor = false))

--------------------^ unary plus on false

这导致了您的神秘错误.

which is causing your cryptic error.

这篇关于未定义的方法“+@"为 false:FalseClass (NoMethodError) ruby的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-28 19:29