2015-06-18 2 views
1

У меня есть массив строк, содержащих номер:элементов массива до целых чисел

array = ["1", "2", "3"] 

Я хочу, чтобы преобразовать каждую строку в массиве в целое число.

array.each { |n| n.to_i } не работает, потому что

p array.inject(:+) 

возвращает "123" (строка), а не 6 (целое число)

+0

Если все, что вы хотите это сумма, просто выполните ее за одну операцию: 'array.reduce (0) {| t, n | t + n.to_i} '. –

ответ

2
array = ["1", "2", "3"] 
new_array = array.map { |n| n.to_i } 
p new_array.inject(:+) 
=> 6 
+0

Это именно то, что я хотел, спасибо. Я не знал о методе карты. – Nemo

+1

, в то время как этот ответ верен на удивление, 'Symbol.to_proc' на самом деле быстрее, поэтому' array.map (&: to_i) 'фактически увеличит производительность при выполнении той же операции – engineersmnky

0

одна линия решение:

array.map(&:to_i).inject(:+) 
# => 6 
Смежные вопросы