Какова цель двойных двоеточий в Lua?
Я знал, что версия 5.3 для Lua вышла не так давно, но до сих пор не было причин просматривать документацию онлайн. Я могу ошибаться, но я не верю, чтобы вспомнить использование двойных двоеточий ::
как это используется так обильно там.
Я вижу, что он считается "специальным токеном", как и другие (больше, меньше, чем звездочки и т. Д.), Но я знаю, для чего они.
Какова цель использования их в Lua?
1 ответ
::
используется только в Lua *:
Объявление меток для прыжков сgoto
,
goto label
::label::
goto
оператор передает управление программой на метку. По синтаксическим причинам метки в Lua также считаются утверждениями:stat ::= goto Name stat ::= label label ::= ‘::’ Name ‘::’
Метка видна во всем блоке, где она определена, кроме как во вложенных блоках, где метка с тем же именем определена, и во вложенных функциях. Goto может перейти к любой видимой метке, если она не входит в область действия локальной переменной.
Метки и пустые операторы называются пустыми, так как они не выполняют никаких действий.
* Я не рассматриваю широкое использование с расширенным BNF при использовании документации в самом Lua.