加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua – 如何解决这个解包问题?

发布时间:2020-12-14 21:45:45 所属栏目:大数据 来源:网络整理
导读:我正在创建一个Array类,为表添加更多用法.我有一个metamethod,允许我组合两个表,例如: 数组(5)..数组(6,10)应该给你{5,6,10} 我知道我可以使用两个循环来做到这一点,但我正在努力使我的代码尽可能干净和高效.解压缩我遇到了一个问题.我正在尝试连接两个表,
我正在创建一个Array类,为表添加更多用法.我有一个metamethod,允许我组合两个表,例如:

数组(5)..数组(6,10)应该给你{5,6,10}

我知道我可以使用两个循环来做到这一点,但我正在努力使我的代码尽可能干净和高效.解压缩我遇到了一个问题.我正在尝试连接两个表,但它不包括所有值.这是我的代码和输出:

local Array = {}
Array.__index = Array

function Array.__concat(self,other)
    return Array.new(unpack(self),unpack(other))
end

function Array:concat(pattern)
    return table.concat(self,pattern)
end

function Array.new(...)
    return setmetatable({...},Array)
end

setmetatable(Array,{__call = function(_,...) return Array.new(...) end})

local x = Array(5,12,13) .. Array(6,9) --concatenate two arrays
print(x:concat(","))

输出:5,9(我希望它是“5,13,9”)

解决方法

这是标准的Lua行为:在用逗号分隔的函数调用的枚举中,只有最后一个可以返回多个结果.例如:

> function f() return 1,2,3 end
> print(f(),f())
1    1    2    3

如果我是你,我会做一件简单的事情并使用for循环.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读