Есть ли решение, когда я вычисляю все элементы из массива? - PullRequest
0 голосов
/ 05 мая 2019

все!

Я бы хотел посчитать весь доход в $ доходах. Как видите, доход первого массива равен 10, второго - 20, третьего - 30. и я хотел бы рассчитать все из них.

Когда я пытался решить эту проблему, в консоли всегда отображалось «неявное преобразование Symbol в Integer». Затем я положил .to_i или .to_s, но это не сработало.

Есть ли какое-то решение для этого? Спасибо.

$incomes = [
    { companyID: 0, income: 10 ,description: "jun invoice", date: "2019/08/08"},
    { companyID: 0, income: 20 ,description: "aug invoice", date: "2019/09/08"},
    { companyID: 0, income: 30 ,description: "sep invoice", date: "2019/10/08"}
  ]

def printOurCompanyIncome()
      $incomes.each_with_index do |income, index|
        puts "#{index} -- companyID: #{income[:companyID]}, income: #{income[:income]}, description: #{income[:description]}, date: #{income[:date]}"
      end
end

def computeIncome()
  puts "Calculate all incomes from $incomes here"
end

def smenu()
  puts "0) Print our company income"
  puts "1) Calculate all our company's income "
  decision = gets.chomp
 case decision.to_i
 when 0
   printOurCompanyIncome()
 when 1
   computeIncome()
 else 
    puts "Something went wrong"
  end
end
smenu()

Консоль показала "неявное преобразование символа в целое число"

Скриншот

enter image description here

Ответы [ 2 ]

3 голосов
/ 05 мая 2019

Вы можете использовать Array#sum, чтобы получить сумму всех зарплат из хэшей, вложенных в ваш массив:

$incomes = [
  { companyID: 0, income: 10 ,description: "jun invoice", date: "2019/08/08"},
  { companyID: 0, income: 20 ,description: "aug invoice", date: "2019/09/08"},
  { companyID: 0, income: 30 ,description: "sep invoice", date: "2019/10/08"}
]

def computeIncome()
  puts "Calculate all incomes from $incomes here"
  puts $incomes.sum { |income| income[:income] }
end

computeIncome
#=> Calculate all incomes from $incomes here
#=> 60

Кстати, ваш код не соответствует распространенным стилям Ruby.Например:

  • глобальные переменные почти никогда не используются
  • имена методов и переменные пишутся в нижнем подчеркивании (не в регистре или в Паскале)
  • Нет необходимости в пустомкруглые скобки
  • обычно, код имеет два пробела

Помимо первого пункта, для них может быть не важно иметь безошибочный исходный код, но следование этим соглашениям и идиомам увеличиваетудобочитаемость и облегчает сотрудничество с другими разработчиками.Поэтому я советую взглянуть на некоторые известные руководства по стилю, например, из Rubocop .

0 голосов
/ 05 мая 2019
$incomes = [
  { companyID: 0, income: 10 ,description: "jun invoice", date: "2019/08/08"},
  { companyID: 0, income: 20 ,description: "aug invoice", date: "2019/09/08"},
  { companyID: 0, income: 30 ,description: "sep invoice", date: "2019/10/08"}
].collect{ |income| income[:income] }.sum
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...