0

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

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

到底是怎么回事?

4

2 回答 2

11

您在%评估运算符之前将 0 分配给 x :

print x if 125 % x = 0

请注意,最后一位x = 0, 是assignment。您需要用于==测试是否相等:

print x if 125 % x == 0
于 2012-01-05T18:39:17.967 回答
1

你错过了一个=. 如果看起来模棱两可,请尝试强制评估顺序:

print x if (125 % x) == 0

于 2012-01-05T18:48:02.643 回答