您的位置:首页 > 编程语言 > Lua

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

2015-05-23 15:42 633 查看
迭代法遍历 table,当Table中含Table时,递归调用。打印Table中 K, V值

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

table1 = {

name = "Android Developer",

email = "hpccns@gmail.com",

url = "http://blog.csdn.net/hpccn",

quote = [[

There are

10 types of pepole

who can understand binary.

]],--多行文字

embeddedTab = {

em1 = xx,

x =0,

{x =1, y =2 } -- 再内嵌table

}-- 内嵌table

}



tab = " "

function print_table(t, i)

local indent ="" -- i缩进,当前调用缩进

for j = 0, i do

indent = indent .. tab

end

for k, v in pairs(t) do

if (type(v) == "table") then -- type(v) 当前类型时否table 如果是,则需要递归,

print(indent .. "< " .. k .. " is a table />")

print_table(v, i + 1) -- 递归调用

print(indent .. "/> end table ".. k .. "/>")

else -- 否则直接输出当前值



print(indent .. "<" .. k .. "=" .. v.."/>")

end

end

end





print_contents(table1, 0)

输出结果:

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

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

[plain] view
plaincopy

<name=Android Developer/>

<quote= There ar

10 types of pepole

who can understand binary.

/>

<url=http://blog.csdn.net/hpccn/>

< embeddedTab is a table />

< 1 is a table />

<y=2/>

<x=1/>

/> end table 1/>

<x=0/>

/> end table embeddedTab/>

<email=hpccns@gmail.com/>

学习重点:

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

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

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

[plain] view
plaincopy

type(“hello world”); ---->string

type(type); ---->function

type(3.1415); ---->number

type(type(type)); ---->string

2 迭代法

pairs 迭代全部的项

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

[plain] view
plaincopy

for k, v in pairs(t) do
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: