在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这里的函数主要用来做:返回指定表格中所有的键。参考资料为quick_cocos. 星月倾心贡献~~~ --[[ -- 返回指定表格中的所有键(key) -- example: local t = ( a = 1, b = 2, c = 3 ) local keys = table.keys( t ) -- keys = { "a", "b", "c" } -- @param t 要检查的表格(t表示是table) -- @param table 返回指定表格的所有键(key),它是一个键集合的表格 --]] function table.keys( t ) local keys = {} for k, _ in pairs( t ) do keys[#keys + 1] = k end return keys end 原理很简单:获取指定表格的所有key,将key保存到一张表中,然后返回,so easy~~~(小白:不要说鸟语...) 额...在这之前,我们先看个简单排序例子...谁乱扔蔬菜...我...(小白:你有今天...) local tbl = { 1, 3, 5, 6, 5, 8, 0 } -- 一个数组 -- 星月要对这个数组排序 table.sort( tbl ) -- 系统自带排序方法 for k, v in ipairs( tbl ) do print( k .. ":" .. v ) end 上面有个数组table,星月用table自带的sort函数进行排序,然后输出结果。大家注意:这里用ipairs遍历。因为ipairs是顺序遍历的~~~ 输出: 1:0 2:1 3:3 4:5 5:5 6:6 7:8 输出没有任何错误。 ( 小白:可是我想从高到低输出。。。)星月:这个可以有。。。 local tbl = { 1, 3, 5, 6, 5, 8, 0 } -- 一个数组 -- 排序规则 local function isBag( t1, t2 ) return t1 > t2 end -- 星月要对这个数组排序 table.sort( tbl, function( t1, t2 ) return isBag( t1, t2 ) end ) for k, v in ipairs( tbl ) do print( k .. ":" .. v ) end 输出: 1:8 2:6 3:5 4:5 5:3 6:1 7:0 哦也~~从大到小输出。(小白:好厉害的样子。。。)
table.sort()方法只能对数组排序。这个要注意。
上面是对数组的value进行排序,如果要对key值进行排序呢,这时就可以用到本章将的函数了。 function table.keys( t ) local keys = {} for k, _ in pairs( t ) do keys[#keys + 1] = k end return keys end local tbl = { [101] = "a", [121] = "b", [186] = "c", [100] = "d", [145] = "e", [122] = "f", [11] = 0 } -- 非数组tbl local keys = table.keys( tbl ) -- 获得指定表格所有keys -- 排序规则 local function isBag( t1, t2 ) return t1 > t2 end -- 注意:星月对keys表格进行排序 table.sort( keys, function( t1, t2 ) return isBag( t1, t2 ) end ) for k, v in ipairs( keys ) do print( "keys: " .. v .. ":" .. tbl[v] ) -- 根据keys,输出tbl。对key排序。 end 输出: keys: 186:c keys: 145:e keys: 122:f keys: 121:b keys: 101:a keys: 100:d keys: 11:0 好了,本章到这里结束。 本章要点:table.sort方法,table.keys方法。 (星月:小白...小白...) (小白:不要打扰我看天线宝宝~~~)
作者使用 cocos2d-x 3.0 + lua学习和工作心得,未经作者允许,请勿转载!在此谢谢各位手下留情~~~ 本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~ 原文地址:http://www.cnblogs.com/wodehao0808/p/4022877.html |
请发表评论