Lua 基础语法|特性使用集合
来源:互联网 发布:程序员改bug 动态图 编辑:程序博客网 时间:2024/06/05 20:06
1. table.sort
下面是两个错误排序函数:
local t = { [1] = {id=1,name="1"}, [2] = {id=2,name="2"}, [3] = {id=4,name="3"}, [4] = {id=4,name="4"}, [5] = {id=4,name="5"},}local sortFunc = function(a,b) if a.id < b.id then return true elseif a.id == b.id then return true else return false endendtable.sort(t,sortFunc)
以上代码运行报错,提示排序函数无效或是 attempt to index local ‘a’ ,原因是:
当比较函数没有写的时候,table.sort默认按照lua里面的排序规则升序排序;当重写了比较函数时,比较函数重载了lua中自带的“<”比较操作符。当a=t[3],b=t[4]时,a < b,当b=t[3],a=t[4]时,b < a,两者矛盾,会出错。修正方法:当比较的值相等时总是返回false。
另一个需要注意的问题是待排序table的类型,如下:
local t = { [1] = {id=100,name="1"}, [2] = {id=20,name="2"}, [3] = {id=4,name="3"}, [40] = {id=4,name="4"}, [5] = {id=4,name="5"},}local sortFunc = function(a,b) if a.id < b.id then return true else return false endendtable.sort(t,sortFunc)for k,v in pairs(t) do print("id:",v.id)endid: 20id: 100id: 4id: 4id: 4
结果基本是乱的,所以排序方法另一个需要注意的是:排序的目标table的必须是数组类型而不是链表类型。
阅读全文
0 0
- Lua 基础语法|特性使用集合
- Lua语法和使用基础
- Lua语法特性
- 【Lua】特性和一些基础语法总结(Lua入门到精通一)
- lua语法特性(一)
- lua脚本基础语法
- Lua基础语法-1
- lua 基础语法
- Lua基础语法
- Lua基础之语法
- Lua脚本语法基础
- lua基础语法
- lua基础语法2
- Lua 语法基础
- lua基础语法
- lua基础语法2
- lua基础语法
- Lua基础语法
- php封装一个显示页码的分页类
- mysql
- android studio关于友盟集成推送问题记录
- TensorFlow 入门 4--卷积神经网络介绍
- C语言的那些小秘密之volatile
- Lua 基础语法|特性使用集合
- android studio 删除module删除不干净
- php使用crypt()函数进行加密
- 3 什么是卷积神经网络(CNN)?
- Less的内置函数
- php使用MD5和SHA1进行加密
- 大数据面临150万的人才缺口,谁来填补?
- hdu 1281 棋盘游戏 二分图匹配;
- 【大数据周聘汇】冬天西北风挺冷,不想喝看这里