Вы пытаетесь ударить бинтом по более крупной проблеме.
В Ruby есть понятие ноль; не могу обойти это. Если вы вызываете метод на nil
, то вы предполагаете, что он действителен, т. Е. Ваш дизайн предполагает, что он действителен. Таким образом, вопрос на самом деле: где дыра в вашем дизайне? Почему ваше предположение неверно?
Проблема здесь не в том, что вы не можете вызывать произвольные методы для объекта, который его не поддерживает; проблема в том, что ваши данные считаются действительными, когда очевидно, что это не всегда так.
Но, на мой взгляд (хамл), у меня есть - @ myvar.phonelist.each do | phone | и если фонетист пуст, он выдает ошибку NoMethodError.
Нет. Если phonelist
не является объектом, который реализует .each
, он выдает ошибку. Очень разные.
Вы всегда можете инициализировать его пустым массивом, если он равен нулю, т. Е. phonelist ||= []
, но я бы предпочел конструкцию, которая обеспечивает достоверность данных, когда это возможно.