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

memo.

[markdown]
## 調査

### 配列内の nil を置換する

> * [ruby – Assign to an array and replace emerged nil values – Stack Overflow](http://stackoverflow.com/questions/2527758/assign-to-an-array-and-replace-emerged-nil-values)

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

“`ruby
puts ‘array ==========’
array = [‘google’, nil, ‘yahoo’]
p array # [“google”, nil, “yahoo”]
p array.map {|e| e ? e : ”} # [“google”, “”, “yahoo”]
“`

### 値 nil を置換する

> * [convert/replace a value of nil with 0? – Ruby Forum](https://www.ruby-forum.com/topic/197808)

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

“`ruby
nil.to_i # 0
“`

### おまけ: array.sort

調査中に見つけた。

> * [rubyでsortする対象にnilが含まれてるとエラー – (゚∀゚)o彡 sasata299’s blog](http://blog.livedoor.jp/sasata299/archives/51176071.html)

## ソース

“`ruby
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]
“`
[/markdown]