エラー処理応用レベル
次のプログラムを実行すると何が表示されますか?
amounts = [nil, "abc", "12abc"] p amounts.map(&:to_i)
- 1[0, 0, 12]
- 2[nil, 0, 12]
- 3[0, nil, nil]
- 4TypeError が発生する
解説
nil.to_i は 0、"abc".to_i も 0、"12abc".to_i は先頭から読める数値部分の 12 を返します。.to_i はエラー回避には便利ですが、入力が正しい金額であることは保証しません。課金コードで無条件に使うと、データ不備を0円として隠す危険があります。