注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

尐鬼じ☆ve伱

和你在一起的日子

 
 
 

日志

 
 

lua学习笔记 4 迭代法遍历 table,当Table中含Table时,递归输出 (转)  

2013-04-19 11:03:47|  分类: luajava |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
来自http://blog.csdn.net/hpccn/article/details/8216814


迭代法遍历 table,当Table中含Table时,递归调用。打印Table中 K, V值


通过type(arg) 判断当前类型


  1. table1 = {  
  2.     name = "Android Developer",  
  3.     email = "hpccns@gmail.com",  
  4.     url = "http://blog.csdn.net/hpccn",  
  5.     quote = [[  
  6.     There are   
  7.     10 types of pepole  
  8.     who can understand binary.  
  9.     ]],--多行文字  
  10.     embeddedTab = {  
  11.         em1 = xx,  
  12.         x =0,  
  13.         {x =1, y =2 } -- 再内嵌table  
  14.     }-- 内嵌table   
  15. }  
  16.   
  17. tab = "    "  
  18. function print_table(t, i)  
  19.     local indent ="" -- i缩进,当前调用缩进  
  20.     for j = 0, i do   
  21.         indent = indent .. tab  
  22.     end  
  23.     for k, v in pairs(t) do   
  24.         if (type(v) == "table") then -- type(v) 当前类型时否table 如果是,则需要递归,  
  25.             print(indent .. "< " .. k .. " is a table />")  
  26.             print_table(v, i + 1) -- 递归调用  
  27.             print(indent .. "/> end table ".. k .. "/>")  
  28.         else -- 否则直接输出当前值  
  29.                   
  30.             print(indent .. "<" .. k .. "=" .. v.."/>")  
  31.         end  
  32.     end  
  33. end  
  34.   
  35.   
  36. print_contents(table1, 0)  


输出结果:

for k,v in pairs(table) do 这样的遍历顺序并非是table中table的排列顺序,而是根据table中key的hash值排序来遍历的。

与Java中 HashMap, C++中的Map相似。

  1.    <name=Android Developer/>  
  2.    <quote=   There ar   
  3. 10 types of pepole  
  4. who can understand binary.  
  5. />  
  6.    <url=http://blog.csdn.net/hpccn/>  
  7.    < embeddedTab is a table />  
  8.        < 1 is a table />  
  9.            <y=2/>  
  10.            <x=1/>  
  11.        /> end table 1/>  
  12.        <x=0/>  
  13.    /> end table embeddedTab/>  
  14.    <email=hpccns@gmail.com/>  



学习重点: 

1 数据类型的判断: type()

lua语言中的数据类型主要有:nil、number、string、function、table、thread、boolean、userdata。

需要确定一个变量的类型时,可以使用内置函数type获取,如下:

  1. type(“hello world”);              ---->string  
  2. type(type);                            ---->function  
  3. type(3.1415);                       ---->number  
  4. type(type(type));                  ---->string  



2 迭代法 

pairs 迭代全部的项

ipairs 迭代以数字做键值的项,且从1 开始

  1. for k, v in pairs(t) do   
  评论这张
 
阅读(221)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017