Lua有一个函数table.sort可以对表进行排序, 带2个参数, 第一个参数是表, 第二个参数是排序函数.
例如 :
定义1个表 :
按照name倒序排
按照年龄倒序排
> t = {}
> t[1] = {name="digoal", age=30}
> t[2] = {name="francs", age=29}
> t[3] = {name="dage", age=34}
使用table.sort对表进行排序, 第二个参数是一个函数, 可以是匿名函数或者函数变量.
> table.sort(t, function(x,y) return x.name < y.name end)
或者
> f = function(x,y) return x.name < y.name end
> table.sort(t, f)
排序后, 表的内容被改变. 所以table.sort实际上是变更了表的内容的.
> print( t[1].name )
dage
> print( t[2].name )
digoal
> print( t[3].name )
francs
按照name倒序排
> table.sort(t, function(x,y) return x.name > y.name end)
> print( t[1].name )
francs
> print( t[2].name )
digoal
> print( t[3].name )
dage
按照年龄倒序排
> table.sort(t, function(x,y) return x.age > y.age end)
> print( t[1].name, t[1].age )
dage 34
> print( t[2].name, t[2].age )
digoal 30
> print( t[3].name, t[3].age )
francs 29