未定义的方法`+ @’表示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) 

我收到了上述错误,我完全被难住了。 任何想法(不,这不是功课,我试图通过欧拉项目自学Ruby)。

正如mikej所说,ruby中没有后递增( ++ )运算符。 然而,有一个一元加(拼写+@定义时)

 last_known_prime++ found_factor = false 

被解析为类似的东西

 last_known_prime + (+(found_factor = false)) --------------------^ unary plus on false 

这导致你的神秘错误。

在Ruby中没有用于递增整数的++运算符,因此请尝试使用last_known_prime = last_known_prime + 1替换last_known_prime++

这将解决您所看到的错误。 在此之后你的程序还有另一个问题,但我不会破坏你自己解决欧拉问题的尝试。