2 flat logo on transparent 256
2018-12-29
2018-12-29

Rubyのエラー|comparison of Integer with nil failed nil

2018oops11

Rubyの配列でsortしようとしたら

comparison of Integer with nil failed nil(AugumentError)

というエラーが発生したので、エラーの内容と対処方法を記載します。

エラーが発生したコードとエラー内容

values配列を作成し、配列内の数字を.sortメソッドでソートしようとしたらエラーが発生しました。

$values = [nil, 1, 0, 2, 3]  
$values.sort
comparison of Integer with nil failed nil(AugumentError) 

Rubyの.sortメソッドで配列をソートする場合は、中身の値の型を合わせる必要があります

その為、to_iメソッドで数値に変換すればソートされます。

$values =  [nil, 1, 0, 2, 3]  
$values.sort{|a,b|a.to_i <=> b.to_i}
$[nil, 0, 1, 2, 3]

例えば以下のように配列内の要素が文字列の場合は正しくソートされます。

$values = ["nil", "a", "c", "d", "v"]  
$values.sort
$["a", "c", "d", "nil", "v"]

その他関連記事

Railsのエラー cannot load such file -- xmlrpc/client (LoadError)

【初心者・独学者向け】プログラミングに困ったらテラテイルで質問してみよう

ArgumentError in Controller index key must be 32 byteエラーについて

Rail5でアップデートしたらmysql2でエラーになった場合の対処方法

Ruby On Railsのデバッグツール byebugの紹介

Ruby On Railsのin? メソッドで任意のオブジェクトに配列が含まれているか判別する

Mac+rbenvでRubyの2.4系をインストールする手順

rbenvでよく使うコマンド一覧

前の記事
次の記事
人気記事
カテゴリーから記事を探す