Enumerable基礎レベル

次のプログラムを実行すると何が表示されますか?

charges = []
total = charges
  .select { |charge| charge[:active] }
  .sum { |charge| charge[:amount] }

p total
  • 1nil
  • 20
  • 3[]
  • 4NoMethodError が発生する

解説

空配列に対して select を呼ぶと空配列のままです。その空配列に対して sum を呼ぶと、足す要素がないため 0 を返します。nil ではありません。課金コードでは「対象 charge がないので合計0円」と読めるケースがあります。

問題一覧へ戻る