真的,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,就像它应该的那样。
发生了什么事?
答案 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