Это очень простой вопрос.%
- это оператор по модулю if counter % 2 == 1
приводит к true
для каждого нечетного числа и к false
для каждого четного числа.
Если вы изучаете рубин, вы должны научиться использовать irb
, там вы можете попробовать и, возможно, сами ответить на вопрос.
попробуйте ввести
100.times{|i| puts "#{i} % 2 == 1 #=> #{i % 2 == 1}"}
в вашу irb
irb консоль и посмотреть вывод, чем должно быть понятно, что%
делает.
И вы действительно должны взглянуть на документацию API рельсы ( 1.9 , 1.8.7 , 1.8.7 ), там вы бы нашли ответ два на ваш вопрос % (Fixnum) с дополнительной ссылкой на подробное описание divmod (Числовой) :
Возвращает массив, содержащий частное и модуль, полученные путем деления числа на число.> Если q, r = x.divmod (y), то
q = floor(float(x)/float(y))
x = q*y + r
Коэффициент округляется до -infinity, как показано в следующей таблице:
a | b | a.divmod(b) | a/b | a.modulo(b) | a.remainder(b)
------+-----+---------------+---------+-------------+---------------
13 | 4 | 3, 1 | 3 | 1 | 1
------+-----+---------------+---------+-------------+---------------
13 | -4 | -4, -3 | -3 | -3 | 1
------+-----+---------------+---------+-------------+---------------
-13 | 4 | -4, 3 | -4 | 3 | -1
------+-----+---------------+---------+-------------+---------------
-13 | -4 | 3, -1 | 3 | -1 | -1
------+-----+---------------+---------+-------------+---------------
11.5 | 4 | 2, 3.5 | 2.875 | 3.5 | 3.5
------+-----+---------------+---------+-------------+---------------
11.5 | -4 | -3, -0.5 | -2.875 | -0.5 | 3.5
------+-----+---------------+---------+-------------+---------------
-11.5 | 4 | -3, 0.5 | -2.875 | 0.5 | -3.5
------+-----+---------------+---------+-------------+---------------
-11.5 | -4 | 2 -3.5 | 2.875 | -3.5 | -3.5
Примеры
11.divmod(3) #=> [3, 2]
11.divmod(-3) #=> [-4, -1]
11.divmod(3.5) #=> [3, 0.5]
(-11).divmod(3.5) #=> [-4, 3.0]
(11.5).divmod(3.5) #=> [3, 1.0]