エラー処理応用レベル

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

amounts = [nil, "abc", "12abc"]
p amounts.map(&:to_i)
  • 1[0, 0, 12]
  • 2[nil, 0, 12]
  • 3[0, nil, nil]
  • 4TypeError が発生する

解説

nil.to_i0"abc".to_i0"12abc".to_i は先頭から読める数値部分の 12 を返します。.to_i はエラー回避には便利ですが、入力が正しい金額であることは保証しません。課金コードで無条件に使うと、データ不備を0円として隠す危険があります。

問題一覧へ戻る