Подстрока всего содержимого массива - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь найти компактное решение для обработки файла, который имеет позиционные числовые значения для нескольких категорий, скажем, [2..3] - это значение для A, [4..5] для B и так далее.

Мне нужно суммировать все эти значения за один проход, если это возможно, то, что мне нравится в Ruby.Но у меня проблема.

Обработка массива для ruby ​​без цикла с array.inject(0)

contentX = ['a12334111','b3215555','c444389663']
content = [  12334111,  3215555 , 44489663]      # this OK

a =  content[1]
b = a.to_s[0..3]  # this string need to add
puts 'a:       ' + a.to_s + '  b:  ' + b.to_s

s = content.inject(:+)
s2 = contentX[0..3].inject(:+) #  Error here, no values calculated

puts 'Sum    ' + s.to_s
puts 'Sum2   ' + s2.to_s


#this is wanted output =================:::::
Sum2  = 888   # (123 + 321 + 444)

1 Ответ

2 голосов
/ 01 июня 2019

Просто сопоставьте входные данные с тремя необходимыми цифрами, преобразуйте их в целое число и сумму:

['a12334111','b3215555','c444389663'].
  map { |n| n[1...4].to_i }.sum
#⇒ 888

Sidenote: Enumerable#sum совпадает с inject(&:+).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...