• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua table concat

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

【1】table concat 简介

使用方式:

table.concat(table, sep, start, end)

作用简介:

concat是concatenate(连锁、连接)的缩写。

table.concat()函数列出指定table的数组部分从start位置到end位置的所有元素,元素间以指定的分隔符(sep)隔开。

除了table外,其余参数都不是必需的:

sep分隔符的默认值是空字符, start的默认值是1,end的默认值是数组部分的总长。

虽然sep, start, end都不是必需参数,但需明确实参赋值先后顺序机制与C语言的类似,即若指定靠后的参数值, 必须同时指定前面的参数。

【2】学习示例

(2.1)数字下标连续(数组table 与列表table

-- 数字下标连续
-- tabTemp1
local tabTemp1 = 
{ 
    "c",
    "c++",
    "lua",
    "kotlin",
    "python",
    "go",
    "sql",
    "php"
};

print("length1: " .. (#tabTemp1))
print(table.concat(tabTemp1, ";"))

-- tabTemp2
local tabTemp2 = 
{ 
    [1] = "c",
    [2] = "c++",
    [3] = "lua",
    [4] = "kotlin",
    [5] = "python",
    [6] = "go",
    [7] = "sql",
    [8] = "php"
};

print("length2: " .. (#tabTemp2))
print(table.concat(tabTemp2, ";"))

-- tabTemp3
local tabTemp3 = 
{ 
    "c",
    "c++",
    "lua",
    a = 10,
    b = 20,
    "kotlin",
    "python",
    "go",
    "sql",
    "php"
};

print("length3: " .. (#tabTemp3))
print(table.concat(tabTemp3, ";"))

-- tabTemp4
local tabTemp4 = 
{ 
    "c",
    "c++",
    "lua",
    a = 10,
    b = 20,
    "kotlin",
    "python",
    "go",
    "sql",
    "php",
    [9] = "java",
    [10] = "swift"
};

print("length4: " .. (#tabTemp4))
print(table.concat(tabTemp4, ";"))\

--[[
length1: 8
c;c++;lua;kotlin;python;go;sql;php
length2: 8
c;c++;lua;kotlin;python;go;sql;php
length3: 8
c;c++;lua;kotlin;python;go;sql;php
length4: 10
c;c++;lua;kotlin;python;go;sql;php;java;swift
--]]

说明:

[1] 根据table的原理,其实,tabTemp1和tabTemp2本质是同一个table表,所以结果是相同的。

[2] table为数组或者是下标为1开始的有序列表时,说明concat方法操作一切正常。

(2.2)下标不连续(其他)

-- 数字下标不连续
-- tabTemp1
local tabTemp1 = 
{ 
    "c",
    "c++",
    "lua",
    a = 10,
    "119",
    "120",
    [6] = "python",
    [8] = "go",
    [15] = "sql",
    [19] = "end"
};

print("length1: " .. (#tabTemp1))
print(table.concat(tabTemp1, ";"))

-- tabTemp2
local tabTemp2 = 
{ 
    "c",
    "c++",
    "lua",
    a = 10,
    "119",
    "120",
    [6] = "python",
    [10] = "go",
    [15] = "sql",
    [19] = "end"
};

print("length2: " .. (#tabTemp2))
print(table.concat(tabTemp2, ";"))

-- tabTemp3
local tabTemp3 = 
{ 
    "c",
    "c++",
    "lua",
    a = 10,
    "119",
    "120",
    [3] = "python",
    [15] = "sql"
};

print("length3: " .. (#tabTemp3))
print(table.concat(tabTemp3, ";"))

-- tabTemp4
local tabTemp4 =
{ 
    [2] = "c",
    "c++",
    "lua",
    a = 10,
    "119",
    "120",
    [6] = "python",
    [8] = "go",
    [15] = "sql",
    [19] = "end"
};

print("length4: " .. (#tabTemp4))
print(table.concat(tabTemp4, ";"))

--[[
length1: 6
c;c++;lua;119;120;python
length2: 6
c;c++;lua;119;120;python
length3: 5
c;c++;lua;119;120
length4: 4
c++;lua;119;120
--]]

(2.3)下标没有从1开始

-- 数字小标不从1开始
-- tabTemp
local tabTemp =
{ 
    [2] = "c",
    a = 10,
    b = 20,
    [6] = "python",
    [8] = "go",
    [15] = "sql",
    [19] = "end"
};

print("length: " .. (#tabTemp))
print("concat ret: ".. table.concat(tabTemp, ";"))

--[[
length: 0
concat ret: 
--]]

如上实例,仔细分析。

【3】总结

(1)第三个参数end,即table的长度非常关键。

(2)concat函数操作的table都是一个数组或者列表,也就是下标必须从一开始的连续数列。

(3)当下标不是从1开始时,且没有数组或列表元素时,concat连接结果为空。

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Nginx与Lua自定义反向代理发布时间:2022-07-22
下一篇:
Lua 笔记11发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap