[解決済み] 配列に何かを追加しようとしたときに、nil から整数への暗黙の変換が行われない。
質問
かなり複雑なハッシュを構築しようとしているのですが、不思議なことにエラーが発生します。
no implicit conversion from nil to integer
という行を使用すると
manufacturer_cols << {:field => 'test'}
同じ行を後で同じループの中で使っていますが、問題なく動作しています。
コード全体は
manufacturer_cols=[]
manufacturer_fields.each_with_index do |mapped_field, index|
if mapped_field.base_field_name=='exactSKU'
#this is where it is breaking, if I comment this out, all is good
manufacturer_cols << { :base_field=> 'test'}
else
#it works fine here!
manufacturer_cols << { :base_field=>mapped_field.base_field_name }
end
end
------- manufacturer_fields の値 -------。
[{"base_field":{"base_field_name":"Category","id":1,"name":"Category"}},{"base_field".Base_field:{"base_field_Name":"Category"}}: {"base_field_name":"Description","id":3,"name":"Short_Description"}},{"base_field":{"base_field_name";}: "exactSKU","id":5,"name":"Item_SKU"}},{"base_field":{"base_field_name":"Markup","id": 25,"name":"Retail_Price"}},{"base_field":{"base_field_name":"Family","id":26,"name":"Theme" }}] があります。
解決方法
暗黙の変換エラーの説明
あなたのコードがなぜこのエラーになるのか、正確にはわかりませんが、このエラーの意味を正確にお伝えすることができます。
Rubyには2種類の変換があります。 明示的 と 暗黙のうちに
明示的な変換は、次のように短い名前を使用します。
#to_s
または
#to_i.
これらはコアで共通に定義されており、常に呼び出されています。これらは文字列でも整数でもないオブジェクトのためのものですが、デバッグやデータベース変換、文字列補間などのために変換されることがあります。
暗黙的な変換は、長い名前を使用し、例えば
#to_str
または
#to_int.
この種の変換は、文字列や整数に非常によく似たオブジェクトのためのもので、単にその分身の形をとるときを知る必要があるだけです。これらの変換はコアでは決して,あるいはほとんど定義されません。 (Hal Fultonの
ルビー・ウェイ
を識別します。
パス名
を定義する理由を見つけるクラスの1つです。
#to_str
.)
あなたのエラーを出すのはかなり難しいです、さらに
NilClass
は、明示的な(短い名前の)コンバータを定義しています。
nil.to_i
=> 0
">>#{nil}<<" # this demonstrates nil.to_s
=> ">><<"
このように発動させることができます。
Array.new nil
TypeError: no implicit conversion from nil to integer
そのため
あなたのエラーは、Rubyインタプリタ内のCコードから発生しています。 Cで実装されたコアクラスが、Rubyのインタープリタに
nil
を期待しているのに
Integer
. を持つことがあります。
#to_i
を持つが
#to_int
というように、結果的に
TypeErrorです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み】Rubyで "gets "と "gets.chomp "を使用する方法
-
[解決済み] Ruby プログラムに一定時間待つように指示する
-
[解決済み] Rubyがブロックの中でパイプ文字を使うことについて、誰か説明してください。
-
[解決済み] Rubyで日付文字列をパースする
-
[解決済み] Capybaraを使ったドロップダウンでのオプションの選択方法
-
[解決済み] Ruby で PDF 文書を解析する
-
[解決済み] Ruby で配列の順序を逆転させる
-
[解決済み] Rubyの予期しないキーワードの終了、および予期しない入力の終了
-
ERRORの問題を解決します。rails のインストール時に gem ネイティブ拡張のビルドに失敗しました。