- CONTENT
-- ---
lua中table.sort的回调函数的在确定大小关系(>/<)时会关联第一个table参数的key值。如果回调函数只是给出大于或者小于的关系,那么第一个table参数(一般是数字值)会按照给出的大小顺序进行排序(示例一);如果第一个table参数是纯粹的字符(类似示例二),要想根据第二个回调函数指出的大小关系进行排序,就需要注意第一个table参数与回调函数的key的对应关系了,具体参见如下第二示例。
-- ---
-- 实例一
-- ---
local t = { 3,2,5,1,4 }
local function compare( a, b )
return a < b
end
table.sort( t, compare )
print( table.concat( t, ", " ) ) -- 1, 2, 3, 4, 5
-- ---
-- 实例二
-- ---
names = {"Peter", "Paul", "Mary"}
grades = {Mary = 10, Paul = 7, Peter = 8}
function sortbygrade (names, grades)
table.sort(names, function (n1, n2)
return grades[n1] < grades[n2]
end)
end
sortbygrade(names, grades)
print(table.concat( names, ", "))
-- ---
lua中table.sort的回调函数的在确定大小关系(>/<)时会关联第一个table参数的key值。如果回调函数只是给出大于或者小于的关系,那么第一个table参数(一般是数字值)会按照给出的大小顺序进行排序(示例一);如果第一个table参数是纯粹的字符(类似示例二),要想根据第二个回调函数指出的大小关系进行排序,就需要注意第一个table参数与回调函数的key的对应关系了,具体参见如下第二示例。
-- ---
-- 实例一
-- ---
local t = { 3,2,5,1,4 }
local function compare( a, b )
return a < b
end
table.sort( t, compare )
print( table.concat( t, ", " ) ) -- 1, 2, 3, 4, 5
-- ---
-- 实例二
-- ---
names = {"Peter", "Paul", "Mary"}
grades = {Mary = 10, Paul = 7, Peter = 8}
function sortbygrade (names, grades)
table.sort(names, function (n1, n2)
return grades[n1] < grades[n2]
end)
end
sortbygrade(names, grades)
print(table.concat( names, ", "))