这如何除以零?

时间:2012-01-05 18:37:47

标签: ruby divide-by-zero

真的,Ruby中非常基本的块:

list = (1..125).to_a
list.each do |x|
    print x if 125 % x = 0
end

给我:

ZeroDivisionError: divided by 0
from (irb):3:in `%'
from (irb):3
from (irb):2:in `each'
from (irb):2

然而,块“put x”返回1到125,就像它应该的那样。

发生了什么事?

2 个答案:

答案 0 :(得分:11)

在评估%运算符之前,您要为x分配0:

print x if 125 % x = 0

请注意,最后一位x = 0分配。您需要使用==来测试相等性:

print x if 125 % x == 0

答案 1 :(得分:1)

你错过了=。如果评估顺序看起来不明确,请尝试强制执行评估顺序:

print x if (125 % x) == 0