这如何除以零?

col*_*nwd 0 ruby divide-by-zero

真的,Ruby中真正的基本块:

list = (1..125).to_a
list.each do |x|
    print x if 125 % x = 0
end
Run Code Online (Sandbox Code Playgroud)

给我:

ZeroDivisionError: divided by 0
from (irb):3:in `%'
from (irb):3
from (irb):2:in `each'
from (irb):2
Run Code Online (Sandbox Code Playgroud)

然而,块"put x"返回1到125,就像它应该的那样.

到底是怎么回事?

mea*_*gar 11

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

print x if 125 % x = 0
Run Code Online (Sandbox Code Playgroud)

注意,最后一位x = 0赋值.您需要使用==来测试相等性:

print x if 125 % x == 0
Run Code Online (Sandbox Code Playgroud)