0
0

to_iを用いたnil回避術

Last updated at Posted at 2024-06-07

integer型の結果を表示する際の例

# 外部APIから取得したデータをシミュレートする
api_response = {
  user_id: 123,
  usage_count: nil  # APIレスポンスにusage_countが含まれていない場合
}

# usage_countを整数に変換する。
usage_count = api_response[:usage_count]

puts "ユーザーID: #{api_response[:user_id]}"
puts "使用回数: #{usage_count} 回"

例えば、外部APIから取得したレスポンスにuser_idとusage_countが含まれているとします。
ただ、usage_conutがレスポンスに含まれていない場合usage_countはnilとなります。
この際に、usage_countをnilという表示するのは避けたいです。

そんなときに、to_iが力を発揮します。

to_iとは

to_iメソッドはRuby標準ライブラリです。
to_iは文字列の数値をinteger(整数)に変換してくれます。
to_iの挙動は以下のようになります。

文字列からinteger(整数)に変換

数値が文字列に含まれていれば返します。文字列ならば0を返します。
そして、数値+数値以外の文字列の場合は数値のみ返します。

"123".to_i   #=> 123
"abc".to_i   #=> 0
"12abc".to_i #=> 12

浮動小数点からinteger(整数)に変換

浮動小数点の場合は小数点以下は切り捨てられます。

12.34.to_i   #=> 12

その他の場合

nilの場合は0を返し、trueの場合は1、falseの場合は0を返します。

nil.to_i     #=> 0
true.to_i    #=> 1
false.to_i   #=> 0

基数変換

また()の中に進数を指定することで基数に基づいてinteger(整数)に変換されます。

"ff".to_i(16)  #=> 255
"1010".to_i(2) #=> 10

まとめ

冒頭で述べたものでは

# 外部APIから取得したデータをシミュレートする
api_response = {
  user_id: 123,
  usage_count: nil  # APIレスポンスにusage_countが含まれていない場合
}

# usage_countを整数に変換する。nilの場合は0として扱う
usage_count = api_response[:usage_count].to_i

puts "ユーザーID: #{api_response[:user_id]}"
puts "使用回数: #{usage_count} 回"

api_response[:usage_count].to_iとto_iをつけることでnilを0に変換でき、表示結果をnilの場合は0とすることができます。

to_iにはこのような使い方もあるので、ご参考にしてください。

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0