ключевое слово typedef в lua - PullRequest
0 голосов
/ 18 сентября 2018

По синтаксическим причинам я хотел бы написать функции LUA, такие как:

on update()
    --do something
end

, а не обычные:

function update()
    --do something
end

Возможно ли (по сути) typedef или псевдонимключевое слово 'function' как 'on'?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Добавьте эти строки в конце luaX_init в llex.c и пересоберите Lua:

  {
    TString *ts = luaS_new(L, "on");
    luaC_fix(L, obj2gco(ts));  /* reserved words are never collected */
    ts->extra = cast_byte(TK_FUNCTION+1-FIRST_RESERVED);  /* reserved word */
  }
0 голосов
/ 18 сентября 2018

Нет, это невозможно, за исключением случаев, когда вы обрабатываете ввод Lua для замены on на function перед загрузкой программы.

Я предлагаю рассмотреть альтернативы, такие как

on.update = function ()
    -- do something
end

-- on can simply be an alternative name
-- for the global environment
on = _G

или определите программу как строку

-- Update functions is defined as a string, loaded later.
on.update = [[
    -- do something
]]

Чтобы последняя работала, вам нужно установить метаметод __newindex для создания новой функции из строки с помощью load ingстрока и установка результирующей функции в качестве значения поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...