能否在不使用unpack的情况下将表格转换为变量参数?

有没有一种方法可以将数值顺序表作为变量参数返回,而不使用lua中的unpack函数?换句话说,你能重新制作unpack函数吗?

示例表格:

foo = {1, 2, 3}

示例函数:

function unpackTable( tab )
    --
end

期望的结果:

1, 2, 3
点赞
用户2328287
用户2328287
local unpackTable do

local function unpackTable_( tab, i, ... )
  if i == 0 then return ... end
  return unpackTable_( tab, i-1, tab[i], ...)
end

unpackTable = function( tab )
  return unpackTable_(tab, #tab)
end

end

foo = {1, 2, 3}
print(unpackTable(foo))
local unpackTable 

local function unpackTable_( tab, i, ... )
  if i == 0 then return ... end
  return unpackTable_( tab, i-1, tab[i], ...)
end

unpackTable = function( tab )
  return unpackTable_(tab, #tab)
end

foo = {1, 2, 3}
print(unpackTable(foo))

定义了一个名为 unpackTable 的本地函数。

该函数通过unpackTable_函数来递归地展开给定数组的元素,并在内部使用了只读形参

tab代表给定数组,i代表元素下标,...代表展开的值列表。

最后,该函数使用#tab获取给定数组的长度,然后调用unpackTable_函数以展开给定数组。

最后一行创建一个名为foo的数组,print语句将展开foo并打印其值。

2017-02-07 15:53:58