在lua中使用typedef函数关键词

出于语法原因,我想按如下方式编写LUA函数:

on update()
    --做一些事情
end

而不是常规的:

function update()
    --做一些事情
end

是否有可能(实际上)将'function'关键字定义为'on'?

点赞
用户2425163
用户2425163

不,这是不可能的,除非在加载程序之前,将 Lua 输入处理为用 function 替换 on

我建议考虑其他方案,比如:

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

-- on 只是全局环境的备用名称
on = _G

或者将程序定义为字符串

-- 更新函数被定义为一个字符串,稍后加载。
on.update = [[
    -- do something
]]

为了让后者起作用,你必须设置 __newindex 元方法,通过 load 函数从字符串中加载新的函数,并将其设置为字段值。

2018-09-18 18:23:02
用户107090
用户107090

在 llex.c 的 luaX_init 的末尾添加以下代码并重新构建 Lua:

  {
    TString *ts = luaS_new(L, "on");
    luaC_fix(L, obj2gco(ts));  /* 保留字不被回收 */
    ts->extra = cast_byte(TK_FUNCTION+1-FIRST_RESERVED);  /* 保留字 */
  }
2018-09-18 18:51:55