2012-01-05 51 views
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 

然而,塊 「將X個」 返回到125,就像它應該。

這是怎麼回事?

回答

11

%操作之前,你要指定0到x評價:

print x if 125 % x = 0 

注意,最後一點,x = 0,是分配。您需要使用==測試相等:

print x if 125 % x == 0 
+0

啊哈!我覺得這很簡單。謝謝! – colinwd 2012-01-05 18:47:17

+1

你也可以使用'(125%x).zero?'或者甚至是'125.modulo(x).zero?'來避免像這樣的問題。順便說一句:既然你的問題解決了,你應該接受這個答案。 – 2012-01-05 18:49:43

1

你錯過了一個=。試圖強行評估順序,如果它看起來模棱兩可:

print x if (125 % x) == 0