Как правило, избегать "неопределенного метода 'some_method' для nil: NilClass" в Ruby - PullRequest
2 голосов
/ 27 сентября 2010

Печатание с уткой Руби великолепно, но это единственный способ, который кусает меня в задницу. У меня будет какой-нибудь долго работающий скрипт обработки текста или что-то еще, и через несколько часов неожиданный набор обстоятельств приведет к завершению работы скрипта с NoMethodError из-за того, что переменная станет nil.

Теперь, когда это происходит, обычно это легко исправить, но было бы лучше, если бы я мог лучше прогнозировать это или, по крайней мере, обрабатывать ошибки такого типа более изящно. Извините за неопределенность вопроса, но этот тип ошибки просто случается со мной слишком часто, и мне интересно, есть ли хороший способ избежать этого.

Есть ли передовая практика, связанная с такого рода "ошибками типов" для Ruby?

Ответы [ 2 ]

3 голосов
/ 28 сентября 2010

Посмотрите Дизайн по контракту . Это полезно во многих парадигмах программирования, но особенно полезно, когда у вас нет компилятора, который помог бы вам перехватывать ошибки такого рода, запрещая определенные виды значений для параметра.

По сути, DbC позволяет сделать предположение о параметре. Это позволяет вам (во всех местах, кроме одного) пропускать обычные проверки, которые гарантируют выполнение этого предположения.

0 голосов
/ 27 сентября 2010

А как насчет Object.nil?

...