【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 =
{
[] = "c",
[] = "c++",
[] = "lua",
[] = "kotlin",
[] = "python",
[] = "go",
[] = "sql",
[] = "php"
}; print("length2: " .. (#tabTemp2))
print(table.concat(tabTemp2, ";")) -- tabTemp3
local tabTemp3 =
{
"c",
"c++",
"lua",
a = ,
b = ,
"kotlin",
"python",
"go",
"sql",
"php"
}; print("length3: " .. (#tabTemp3))
print(table.concat(tabTemp3, ";")) -- tabTemp4
local tabTemp4 =
{
"c",
"c++",
"lua",
a = ,
b = ,
"kotlin",
"python",
"go",
"sql",
"php",
[] = "java",
[] = "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 = ,
"",
"",
[] = "python",
[] = "go",
[] = "sql",
[] = "end"
}; print("length1: " .. (#tabTemp1))
print(table.concat(tabTemp1, ";")) -- tabTemp2
local tabTemp2 =
{
"c",
"c++",
"lua",
a = ,
"",
"",
[] = "python",
[] = "go",
[] = "sql",
[] = "end"
}; print("length2: " .. (#tabTemp2))
print(table.concat(tabTemp2, ";")) -- tabTemp3
local tabTemp3 =
{
"c",
"c++",
"lua",
a = ,
"",
"",
[] = "python",
[] = "sql"
}; print("length3: " .. (#tabTemp3))
print(table.concat(tabTemp3, ";")) -- tabTemp4
local tabTemp4 =
{
[] = "c",
"c++",
"lua",
a = ,
"",
"",
[] = "python",
[] = "go",
[] = "sql",
[] = "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 =
{
[] = "c",
a = ,
b = ,
[] = "python",
[] = "go",
[] = "sql",
[] = "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.

顺序 选择 循环 总结

Lua table concat的更多相关文章

  1. 【本·伍德Lua专栏】补充的基础09:使用table.concat将一个大的字符串

    近期2天都没有写新的文章了.主要是近期的内容没有特别有意思的. 之前的协同程序也临时没有感觉到特别适用的地方.今天在看数据结构的部分,也是没多大意思(不代表没用). 但是突然发现了一个有意思的地方,那 ...

  2. LUA table学习笔记

    function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t ...

  3. Lua table库整理(v5.1)

    这个库提供了表处理的通用函数. 所有函数都放在表 table. 无论何时,若一个操作需要取表的长度, 这张表必须是一个真序列. table.concat(list, [, sep, [, i , [, ...

  4. 树形打印lua table表

    为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...

  5. Lua table使用

    days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Th ...

  6. lua table表

    lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...

  7. Lua 学习之基础篇四<Lua table(表)>

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...

  8. lua table 的操作(四)

    table在前面作过介绍,它是一种关联数组,这种关联指的是可以设置各类类型的key来存储值. 1.table 间的数据传递 -- 为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b ...

  9. Lua table(表)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...

随机推荐

  1. springmvc4 mybatis 整合 框架源码 bootstrap html5 mysql oracle sqlsever spring SSM

    A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技 ...

  2. C# 【Http请求返回】性能优化500毫秒到 60 毫秒

    偶然发现 C# 的 HttpRequest 要比 Chrome 请求同一Url 慢好多.C# HttpRequest 要500毫秒 而Chrome 只需要 39ms. 作为有责任感的 码农.这个 必须 ...

  3. 大数据除了Hadoop还有哪些常用的工具?

    大数据除了Hadoop还有哪些常用的工具? 1.Hadoop大数据生态平台Hadoop 是一个能够对大量数据进行分布式处理的软件框架.但是 Hadoop 是以一种可靠.高效.可伸缩的方式进行处理的.H ...

  4. Eureka2.0集群环境

    当有2个eureka注册中心构建eureka注册中心集群时,1:微服务的注册中心地址要写2个eureka注册中心的地址,以逗号分隔2:其中1个eureka注册中心A保留有微服务的注册信息,作为主注册中 ...

  5. Nginx 高级配置-自定义json格式日志

    Nginx 高级配置-自定义json格式日志 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在大数据运维工作中,我们经常会使用flume,filebeat相关日志收集工具取收集日志 ...

  6. 谷歌学术出现We're sorry解决办法

    出现这个的原因应该是同ip段的或者就是这个ip曾经是个google的黑名单ip,因为恶意爬取谷歌学术了.解决办法就是申请Hurricane Electric Free IPv6 Tunnel Brok ...

  7. nginx 静态资源服务

    1.文件压缩 location ~ .*\.(jpg|gif|png)$ { gzip on(开启); gzip_http_version 1.1(版本); gzip_comp_level 2(压缩比 ...

  8. 【Linux】文件拷贝-Linux当前目录所有文件移动到上一级目录(转)

    Linux当前目录所有文件移动到上一级目录 mv * ../

  9. linux服务器NAT后无法在内网通过外部IP访问内部服务的问题

    场景一: 将外网访问192.168.100.10的80端口转发到192.168.75.5:8000端口. # iptables -t nat -A PREROUTING -d 192.168.100. ...

  10. Scrapy的中间件(一)

    中间件是Scrapy里面的一个核心概念.使用中间件可以在爬虫的请求发起之前或者请求返回之后对数据进行定制化修改,从而开发出适应不同情况的爬虫. "中间件"这个中文名字和前面章节讲到 ...