Инициализация переменной Ruby - PullRequest
3 голосов
/ 25 февраля 2011

В следующем коде есть путь выполнения, где «bar» не устанавливается перед тестированием, безопасно ли это делать в Ruby?будет ли "bar" иметь инициализацию по умолчанию?

if foo
  bar = true
end

if bar
  puts "true"
end

1 Ответ

7 голосов
/ 25 февраля 2011

Да

Да , это безопасно в том смысле, что наихудшее, что может произойти при обращении к неинициализированному локальному элементу, - это исключение NameError поднял.

На самом деле, у вас немного особый случай.Поскольку синтаксический анализатор увидит bar до того, как на него ссылаются, метод не повысит NameError, даже если foo ложно, а значение bar будет nil.

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