Lua / 使用内联函数代码初始化表但赋值不是函数

我有这个Lua代码来初始化一个表:

table = {
  a = 1;
  b = myfunc();
  c = function () <some code> end;
}

在这个代码之后,table.c的类型为function,所以我必须使用table.c()和..操作符一起打印声明来获取结果。但我想直接使用table.c

有没有办法可以将函数的返回值分配给table.c,使类型不是function,而不必在表之外定义一个函数?

点赞
用户734069
用户734069

如果你希望table.c包含该函数的返回值, 那么你应将函数的返回值分配给它。而不是将函数本身赋值给它。

要获取函数的返回值, 你必须调用该函数。这与b并没有什么不同。myfunc是一个函数;myfunc()是调用该函数并存储其返回值。

但由于Lua语法的限制,调用你正在定义的函数需要将函数构造表达式包裹在(), 然后才能调用它:

c = (function ()<some code>end)();

当然,这只包含在构造表格时该函数的值。

2017-08-08 17:25:58