Lua table concat
【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的更多相关文章
- 【本·伍德Lua专栏】补充的基础09:使用table.concat将一个大的字符串
近期2天都没有写新的文章了.主要是近期的内容没有特别有意思的. 之前的协同程序也临时没有感觉到特别适用的地方.今天在看数据结构的部分,也是没多大意思(不代表没用). 但是突然发现了一个有意思的地方,那 ...
- LUA table学习笔记
function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t ...
- Lua table库整理(v5.1)
这个库提供了表处理的通用函数. 所有函数都放在表 table. 无论何时,若一个操作需要取表的长度, 这张表必须是一个真序列. table.concat(list, [, sep, [, i , [, ...
- 树形打印lua table表
为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...
- Lua table使用
days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Th ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
- Lua 学习之基础篇四<Lua table(表)>
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
- lua table 的操作(四)
table在前面作过介绍,它是一种关联数组,这种关联指的是可以设置各类类型的key来存储值. 1.table 间的数据传递 -- 为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b ...
- Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
随机推荐
- 数据库系列(五)之 mysql的伸缩性
这篇文章,主要讲述mysql的伸缩性.在国内mysql一直都是使用得最多的数据库,在国外也排名前三.mysql是一款开源的.性能较高的数据库. 伸缩性是指在软件设计中,软件(数据库.应用程序)通过特定 ...
- D2Admin基本使用
目录 d2-admin基本使用 1 安装 1.1 全局安装 d2-admin 1.2 创建项目 1.3 启动项目 1.4 注意事项 2 修改框架 title 和 logo 2.1 修改 title 2 ...
- cs1.6 人物地址查询
打开游戏 控制台命令 增加一个BOT:bot_add 增加一个警察:bot_add_ct 增加一个匪徒:bot_add_t 让BOT站在原地不动:bot_stop 1 "-"减号: ...
- android开发中json与java对象相互转换
json与java对象的相互转换.(使用com.google.gson) 在Android开发过程中,客户端总是需要从服务器获取数据,包括XML和json格式,目前json格式的数据使用较为普遍,所以 ...
- 查看LINUX系统的配置
# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...
- CHAR与VARCHAR详解
前言: 前面写过一篇介绍int类型的文章,一直想写一篇介绍字符串字段类型的文章,一直拖着也没思路要怎么下手.最近多关注了下这方面的文章,决定还是把拖了好久的文章了结了吧.本篇文章主要会介绍字符串类型 ...
- sqlserver清空删除日志
USE [lzdxdb] GO ALTER DATABASE lzdxdb SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE lzdxdb SET ...
- MySQL Execution Plan--合理利用隐式的业务逻辑
问题描述 优化过程中遇到一个SQL: SELECT SUM(user_value) FROM user_log ; 其执行计划为: . row *************************** ...
- STL杂记
STL介绍: 我所理解的stl: 容器: 是一种数据结构,如list,vector,和deques ,以模板类的方法提供.为了访问容器中的数据,可以使用由容器类输出的迭代器: 算法: 是用来操作容器 ...
- selenium中三大窗口切换
我们在做UI自动化时,不得不会遇到一些窗口跳转与弹框,在这种的时候如果不进行切换的话,继续执行脚本必然会报错,所以我们就需要用到切换窗口的方法. selenium中主要是三种窗口 Windows窗口 ...