[Ruby] ruby でエラーにならないよう array や value の nil をどうにかする

memo.

Contents

調査

配列内の nil を置換する

.map を使って、欲しい配列を手に入れる。
三項演算子を使って置換している。

puts 'array =========='
array = ['google', nil, 'yahoo']
p array                      # ["google", nil, "yahoo"]
p array.map {|e| e ? e : ''} # ["google", "", "yahoo"]

値 nil を置換する

.to_s とか .to_i すればよいのか。

nil.to_i  # 0

おまけ: array.sort

調査中に見つけた。

ソース

puts 'array =========='
array = ['google', nil, 'yahoo']
p array                      # ["google", nil, "yahoo"]
p array.map {|e| e ? e : ''} # ["google", "", "yahoo"]
puts 'hash values ===='
hash = {apple: 150, banana: 280, lemon: nil}
p array = hash.values        # [150, 280, nil]
p array.map {|e| e ? e : ''} # [150, 280, ""]
puts 'value =========='
p hash[:lemon]      # nil
p hash[:lemon].to_s # ""
p hash[:lemon].to_i # 0
# rubyでsortする対象にnilが含まれてるとエラー - (゚∀゚)o彡 sasata299's blog
# http://blog.livedoor.jp/sasata299/archives/51176071.html
array = [1, 4, 5, nil, 2]
array.sort!{|a, b|
  a.to_i <=> b.to_i
}
p array # [nil, 1, 2, 4, 5]
array = [1, 4, 5, nil, 2]
array.sort!{|a, b|
  (a || 6) <=> (b || 6)
}
p array # [1, 2, 4, 5, nil]