Lua/使用内联函数代码初始化表,但分配值而不是函数

标签 lua lua-table

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

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

在这个 table.c 具有类型函数之后,我必须使用 table.c() 在 print 语句中使用 .. 运算符来获取结果。但我想只使用 table.c 来代替。

有没有一种方法可以获取分配给 table.c 的函数的返回值,这样该类型就不是函数,而不必在表外部定义函数?

最佳答案

如果您希望 table.c 包含函数的返回值,那么您应该为其分配函数的返回值。相反,您为其分配了函数本身。

要获取函数的返回值,您必须调用该函数。它实际上与b没有什么不同。 myfunc 是一个函数; myfunc() 正在调用该函数并存储其返回值。

但是,由于Lua的语法,调用你定义的函数需要将函数构造表达式包装在()中,然后调用它:

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

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

关于Lua/使用内联函数代码初始化表,但分配值而不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574274/

相关文章:

serialization - Lua table.toString(tableName) 和 table.fromString(stringTable) 函数?

lua - 如何确定给定键的值在 Redis 上占用的内存量?

lua - 我在表中有一组键,但我不知道如何检查它

lua - 如何在Lua中删除表?

lua - 如何创建名为 C-API 的 Lua 表

Lua:在等待输入时运行代码

python - 用于 bitstamp API 的 Lua 与 Python。 Python 代码有效但 Lua 无效。为什么?

json - Lua 表 - 两个具有相同键的条目

arrays - Lua:使用不同的大小写对字符串数组进行排序

lua - table.insert(t, i) 和 t[#t+1] = i 有什么区别?