- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
def with_batched_ids(count, ids)
if ids.is_a? Array
if ids.length > 1
ids.each_slice(count) do |ids|
yield(ids)
end
else
yield(ids)
end
else
yield(ids)
end
end
6oHo6o 11.03.2021 02:06 # 0
Продолжим тем, что мусор на входе вместо ошибки даст мусор на выходе. Передал строку -- и схватил её в блок.
Обратим внимание на то, что each_slice это метод Enumerable, а вовсе не конкретного Array, так что код еще и насильно завязан на конкретную реализацию.
И наконец если array у нас имеет размер 1, то его можно спокойно слайсить: получится тот же самый array.
И наконец получать блок и елдить его глупо, ведь each_slice может отлично получить &block