当前位置 : 主页 > 网络编程 > lua >

Lua – 我怎么能获得任何回报?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有兴趣抓取函数的任何返回格式.例如 function foo() return 1endlocal result = foo() -- foo is numeric 1function foo() return {1,2,3}endlocal result1, result2, result3 = foo()local result = foo() -- this is bad as result is `
我有兴趣抓取函数的任何返回格式.例如

function foo()
  return 1
end

local result = foo() -- foo is numeric 1

function foo()
  return {1,2,3}
end
local result1, result2, result3 = foo()
local result = foo() -- this is bad as result is `1` but `2` and `3` are lost

function foo()
  return 1, 2, 3
end
local result = foo() -- foo is a table with all the numbers, that's ok

我正在构建一个将使用代理函数覆盖函数的分析器,但我需要知道返回的数据,然后检查它的type()并相应地访问`但是从代码可以看出我无法访问所有3种情况一种方法.有没有 ?

如果已知最大返回数,请使用类似的内容

v1,v2,v3 = foo()

但你无法判断foo是返回两个值还是三个,最后一个是nil.

强大的解决方案是收集表中的所有回报:

v = table.pack(foo())

然后v.n包含返回值的数量,包括所有nils.

网友评论