上NilClass
定義的各種方法都得心應手,避免Method undefined on NilClass
錯誤,這使您在各種場合使用try
,oror
,andand
,||
,&&
:爲什麼NilClass#to_hash缺乏?
to_a多個尺寸陣列時,有可能不是一些值對某些指標:
陣列[I] .to_a [j]的.to_a [k]的
to_s的可能失敗的模式匹配:
串[正則表達式] .to_s * 2
to_i,to_f,to_c索引搜索的可能失敗等:
array.index(element).to_i * 3
但沒有NilClass#to_hash
雖然有Hash#to_hash
。
如果這種方法存在(class NilClass; def to_hash; {} end end
),那麼我們就能夠做到:
- to_hash用於多種嵌入式哈希時,可能沒有一些值對於某些按鍵:
哈希[ :一個] .to_hash [:b] .to_hash [:C]
我能想到的最好的選擇是:
hash.fetch(:a, {}).fetch(:b, {})[:c]
但是如果我們有NilClass#to_hash
會更好。爲什麼缺少?
爲什麼不見了?因爲沒有人負責添加它。如果這是一項功能要求,這裏並不適合。如果這是關於馬茨頭腦的問題,我想你不會得到明確的答案。你可以自己添加它,如果你喜歡,你的代碼。 *聳聳肩*我沒有投票結束這個問題,因爲也許有人能夠提出一個非常好的論點,爲什麼包括這會讓Ruby變得更糟。然而,我的猜測是,你沒有回答你所問的實際問題。 – Phrogz 2011-04-01 15:52:20
這不是功能請求(尚未)。我想知道,因爲有數組,字符串,但不是哈希看起來不對稱,並且似乎是故意的。 – sawa 2011-04-01 16:32:09
@ Phrogz似乎有一些紅寶石開發者,如果不是因爲Matz,所以我認爲他們可能會有答案。 – sawa 2011-04-01 16:56:38