undefined method 'each' for nil:NilClass
定義爲零的方法「每個」:NilClass
行,所以,我知道有正在談論的數百個問題。
我知道這個錯誤信息是什麼意思,我知道如何處理。
我的問題是:有沒有辦法強制nil類返回一個空數組?
我的第二個問題:它會安全嗎?
感謝
塞巴斯蒂安
undefined method 'each' for nil:NilClass
定義爲零的方法「每個」:NilClass
行,所以,我知道有正在談論的數百個問題。
我知道這個錯誤信息是什麼意思,我知道如何處理。
我的問題是:有沒有辦法強制nil類返回一個空數組?
我的第二個問題:它會安全嗎?
感謝
塞巴斯蒂安
1)當然,你可以補丁零(總是隻有一個零對象在Ruby中的線程,所以你可以修補它,而不是NilClass):
def nil.each
puts 'Hey'
end
nil.each #outputs 'hey'
2)但是,你應該永遠做這樣的事情,因爲它可以打破很多東西里面很多甚至是Ruby本身。
如果你正在使用類似@products
..try三元操作
@products = @products.present? ? @products : []
是的,它是安全的,如果你處理得當使用空,並檢查您之前所需要的相關的值你繼續前進或保存它們
可以修補的你調用每個在類:直接可枚舉
class SomeItem
def each(&block)
[] unless super(&block)
end
end
或修補,但我持懷疑態度感動核心類的方式。
你可以爲'NilClass'定義'each',但這是非常難看的解決方案。如果我是你,我會堅持'(array_or_nil || [])。each {| e | #code}' –
你能詳細說明一下你的用例嗎? – Saurabh
爲什麼不把'to_a'添加到可能是'nil'的值?看起來更清楚 – lx00st