Что обозначают $ undefined и $ end в Ruby? - PullRequest
1 голос
/ 25 февраля 2009

Я использовал обратную косую черту, чтобы продолжить оператор Ruby на следующей строке.

print abc \
+ def

Я добавил пробел после обратной косой черты, потому что мне нравится взрывать вещи, и, конечно же, я получил ошибку:

неожиданный $ undefined, ожидающий $ end

Я предполагаю, что $ undefined является глобальной переменной, которая означает, что компилятор видит все, что он не распознает - в данном случае пробел после обратной косой черты.

Является ли $ end глобальной переменной, которая ссылается на символ «конец строки»?

Эти глобальные переменные являются просто глобальными в моей программе или они более глобальны, чем это? Насколько они глобальны?

Ответы [ 3 ]

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

Это не глобальные переменные. Это просто обозначение, используемое парсером. $undefined, по-видимому, означает пробел или знак, не имеющий значения. $end - это конец строки или оператора.

2 голосов
/ 25 февраля 2009

Держу пари, что $ - это просто сокращение, которое парсер / лексер использует для обозначения токена, а не фактическая переменная, которую можно использовать.

1 голос
/ 25 февраля 2009

$ undefined ссылается на токен лексера, созданный "\" - это синтаксически недопустимый ruby.

$ end лексерный токен для конца файла.

- MarkusQ

...