本文介绍了未定义的方法“+@"为 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!