На что ссылаются $undefined и $end в Ruby?
-
06-09-2019 - |
Вопрос
Я использовал обратную косую черту, чтобы продолжить оператор Ruby на следующей строке.
print abc \
+ def
Я добавил пробел после обратной косой черты, потому что мне нравится все раздувать, и, конечно же, я получил сообщение об ошибке:
неожиданный $undefined, ожидающий $end
Я предполагаю, что $undefined - это глобальная переменная, которая означает все, что видит компилятор и что он не распознает - в данном случае пробел после обратной косой черты.
Является ли $end глобальной переменной, которая ссылается на символ "конец строки"?
Являются ли эти глобальные значения просто глобальными в моей программе или они более глобальны, чем это?Насколько они глобальны?
Решение
Это не глобальные переменные.Это просто обозначение, используемое анализатором. $undefined
по-видимому, означает пустое место или бессмысленный знак. $end
является концом строки или оператора.
Другие советы
Я бы поспорил, что $ - это просто сокращение, которое анализатор / лексер использует для обозначения токена, а не фактической используемой переменной.
$undefined ссылается на токен лексера, созданный "\ " - это не синтаксически допустимый ruby.
токен $end lexer для обозначения конца файла.
-- МаркусК