Ruby: неопределенная локальная переменная или метод обхода - PullRequest
0 голосов
/ 12 сентября 2010

У меня обычно будет какой-то код, похожий на следующий:

return if foo.nil?
bar = foo[:bar] || 0

Проблема с ними выше в том, что если foo [: bar] не существует, я получаю ошибку HTTP 500, потому что возникает исключение NameError, которое выглядит примерно так:

NameError (undefined local variable or method `foo'..)

Какая изящная работа?

1 Ответ

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

Есть плагин, который сделает это проще для вас, называется andand.Это позволит вам сделать что-то вроде:

bar = foo.andand[:bar] || 0

Это должно быть сокращением для foo && foo[:bar], отсюда и название.

Кстати, он также работает с методамиПредполагая, что foo может иметь метод quux, вы можете использовать

foo.andand.quux
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...