码迷,mamicode.com
首页 > 编程语言 > 详细

Sweet Snippet 系列之 Lua表排序

时间:2015-03-08 21:37:49      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:lua   数据结构   迭代器   iterator   



  作为Lua中实现各类数据结构的基石,表的使用想必是贯穿于整个项目的开发过程之中,其中对表内容的排序想必亦是常见的需求之一,Lua内置的Table函数库便提供了sort函数来实现这项功能,但是仅能支持表中数组部分内容的排序,而想要排序表中哈希部分的内容,简单的一个方法就是另写一个迭代器来支持:


function order_pairs(tbl)
    local names_buffer = {}
    for name, _ in pairs(tbl) do
        table.insert(names_buffer, name)
    end
    table.sort(names_buffer, function(a, b) return tostring(a) < tostring(b) end)
    
    local table_index = 0
    local function iterator()
        table_index = table_index + 1
        local key = names_buffer[table_index]
        return key, tbl[key]
    end
    
    return iterator
end

 

  写个简单的测试:


local function print_table(tbl)
    for k, v in pairs(tbl) do
        print(k .. " = " .. v)
    end
    print "========"
end

local function print_table_order(tbl)
    for k, v in order_pairs(tbl) do
        print(k .. " = " .. v)
    end
    print "========"
end

local t = { [4] = "test", "order", b = "pairs", [2] = "another", a = "string" }

print_table(t)

print_table_order(t)

 

  基本就是这么简单~


Sweet Snippet 系列之 Lua表排序

标签:lua   数据结构   迭代器   iterator   

原文地址:http://blog.csdn.net/tkokof1/article/details/44137207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!