Как это делится на ноль? - PullRequest
       17

Как это делится на ноль?

0 голосов
/ 05 января 2012

Действительно, действительно базовый блок в 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

Тем не менее, блок «кладет х» возвращает от 1 до 125, как и положено.

Что происходит?

Ответы [ 2 ]

11 голосов
/ 05 января 2012

Вы присваиваете 0 x, прежде чем вычисляется оператор %:

print x if 125 % x = 0

Обратите внимание, что последний бит x = 0 является присваиванием . Вам нужно использовать == для проверки на равенство:

print x if 125 % x == 0
1 голос
/ 05 января 2012

Вы пропустили =. Попробуйте форсировать порядок оценки, если он выглядит неоднозначно:

print x if (125 % x) == 0

...