Ruby интерпретатор волшебным образом присваивает переменные без ссылок?

$ irb
irb(main):001:0> foo
NameError: undefined local variable or method `foo' for main:Object
  from (irb):1
  from /Users/justinwiley/.rbenv/versions/2.1.2/bin/irb:11:in `<main>'

Пока все хорошо, 'foo' не определено.

irb(main):002:0> if false
irb(main):003:1> foo = 1
irb(main):004:1> end
=> nil

foo все еще должен быть неопределенным, но...

irb(main):005:0> foo
=> nil

Теперь он существует в таблице символов? Так как логика в ветви if никогда не должна быть достигнута, я бы предположил, что foo должен оставаться неопределенным, а не внезапно становиться нулем?

0 ответов

Другие вопросы по тегам