Различные методы, определенные в NilClass
, удобны, чтобы избежать ошибок Method undefined on NilClass
и освобождают вас от использования try
, oror
, andand
, ||
, &&
в различных случаях:
to_a для многомерного массива, когда для некоторых индексов могут отсутствовать некоторые значения:
array [i] .to_a [j].to_a [k]
to_s сопоставление с шаблоном, которое может завершиться ошибкой:
string [regex] .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 для нескольких встроенных хэшей, когда для некоторых ключей может не быть значений:
hash [: a] .to_hash[: b] .to_hash [: c]
Лучшая альтернатива, которую я могу придумать:
hash.fetch(:a, {}).fetch(:b, {})[:c]
но было бы неплохо, если бы у нас было NilClass#to_hash
.Почему его не хватает?