Я экспериментировал с методом ruby reduce
, который является отличным инструментом для манипулирования перечислимыми.
Мне было трудно понять, почему ниже возвращается строка, а не целое число, когда массив содержитодин элемент:
["1", "2"].reduce { |sum, i| sum.to_i + i.to_i }
#=> 3 <- expected
["1"].reduce { |sum, i| sum.to_i + i.to_i }
#=> "1" <- not expected, expecting it to be 1
, в то время как нижеприведенное работает как ожидалось:
["1"].reduce(0) { |sum, i| sum.to_i + i.to_i }
#=> 1
Я знаю, что я инициализирую аккумулятор со значением 0 в этом случае, но мне любопытно, почемупредыдущая реализация не работает!