老程序员分享:Lua的unpack

简介: 老程序员分享:Lua的unpack

"

原文:

用法

unpack它接受一个数组(table)作为参数,并默认从下标1开始返回数组的所有元素

arrayData = {""a"",""b"",""c"",""d"",""e""}

print(arrayData) -- 打印数组的地址

print(table.unpack(arrayData)) -- 从第1//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDEzMTI5Ng==.html

个开始打印数组

//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDEzNDYyMA==.html

print(table.unpack(arrayData, 2)) --从第2个开始打印数组

print(table.unpack(arrayData, 1, 3)) --从第一个打印3个数据

注意:在Lua5.1中,unpack是全局函数,可以直接使用,但是在Lua5.2中,unpack被移到table.unpack,所以在Lua5.2以后要用table.unpack替代unpack。

如果遇到数组下有nil,或者有字母key的时候

local info={1,2,3,nil,5,p=6}

local a,b,c,d,e,f=unpack(info)

print(a,b,c,d,e,f)

输出结果:

1 2 3 nil 5 nil

关于不定数量参数的处理

5.1版本及以前可直接处理

local function fun1(...)

print(unpack(arg))

end

fun1(1,nil,3) //1,nil,3

5.2版本以后需要手动转化

local function fun2(...)

local arg = { ... }

print(table.unpack(arg))

end

fun2(1,nil,3) //1,nil,3

table.length问题

如果参数是{nil, 2, nil}, 就无法正常打印出来,也就是说有nil值的时候,#table的计算结果并不确定


"
image.png
目录
打赏
0
0
0
0
43
分享
相关文章
|
9月前
|
老程序员分享:lua类实现
老程序员分享:lua类实现
46 2
【Lua基础 第5章 】unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
1015 0
【Lua基础 第5章 】unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
|
10月前
|
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
339 1
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
本文介绍了如何通过Lua脚本在Redis中实现分布式锁的原子性操作,避免并发问题。首先讲解了Lua脚本的基本概念及其在Redis中的使用方法,包括通过`eval`指令执行Lua脚本和通过`script load`指令缓存脚本。接着详细展示了如何用Lua脚本实现加锁、解锁及可重入锁的功能,确保同一线程可以多次获取锁而不发生死锁。最后,通过代码示例演示了如何在实际业务中调用这些Lua脚本,确保锁操作的原子性和安全性。
62 6
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
通过本文的介绍,我们详细讲解了 Lua 脚本在 Redis 中的作用、`eval` 命令的使用方法以及 `redis.call` 和 `redis.pcall` 的区别和用法。通过合理使用 Lua 脚本,可以实现复杂的业务逻辑,确保操作的原子性,并减少网络开销,从而提高系统的性能和可靠性。
82 13
|
3月前
|
公司用什么软件监控电脑:Lua 脚本在监控软件扩展功能的应用
在企业环境中,电脑监控软件对保障信息安全、提升效率至关重要。Lua 脚本在此类软件中用于扩展功能,如收集系统信息、监控软件使用时长及文件操作,向指定服务器发送数据,支持企业管理和运营。
66 6
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
301 0
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
65 2
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决