Какова цель двойных двоеточий в Lua?

Я знал, что версия 5.3 для Lua вышла не так давно, но до сих пор не было причин просматривать документацию онлайн. Я могу ошибаться, но я не верю, чтобы вспомнить использование двойных двоеточий :: как это используется так обильно там.

Я вижу, что он считается "специальным токеном", как и другие (больше, меньше, чем звездочки и т. Д.), Но я знаю, для чего они.

Какова цель использования их в Lua?

1 ответ

Решение

:: используется только в Lua *:

Объявление меток для прыжков сgoto ,

goto label
::label::

gotoоператор передает управление программой на метку. По синтаксическим причинам метки в Lua также считаются утверждениями:

stat ::= goto Name
stat ::= label
label ::= ‘::’ Name ‘::’

Метка видна во всем блоке, где она определена, кроме как во вложенных блоках, где метка с тем же именем определена, и во вложенных функциях. Goto может перейти к любой видимой метке, если она не входит в область действия локальной переменной.

Метки и пустые операторы называются пустыми, так как они не выполняют никаких действий.

* Я не рассматриваю широкое использование с расширенным BNF при использовании документации в самом Lua.

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