Lua数据类型

tab1 = {key1 = "val1",key2 = "val2","val3"}
for k,v in pairs(tab1) do
	print(k .. "--" .. v)
end
--[[
 对于全局变量和table nil还有个删除作用
--]]
tab1.key1 = nil
for k,v in pairs(tab1) do
	print(k .. "--" .. v)
end

tab2={"1","2","3"}
for k,v in pairs(tab2) do
	print(k .. "-" .. v)
end
print("=====")

tab2[1] = nil
for k,v in pairs(tab2) do
	print(k .. "-" .. v)
end

--[[
nil 做比较时应该加上双引号 ""
--]]
print(type(x)) --nil
print(type(x) == nil)  -- false
print(type(x) == "nil") -- true


--[[
boolean类型只有两个可选值:true(真)和false(假),Lua把false和nil看作是"假",其他都为"真"
--]]
print(type(true))
print(type(false))
print(type(nil))

if false or nil then
	print("至少有一个是true")
else
	print("false 和 nil都为false !")
end

--[[
string类型字符串由一对双引号或单引号来表示
可以用 两个方括号来标识“一块”字符串
--]]
string1="this is string1"
string2="this is string2"

html=[[
<html>
	<header></header>
	<body>
	<a href="http://www.baidu.com/">hello</a>
	</body>
</html>
]]
print(html)

--[[
对一个数字字符串上进行算术操作时,lua会尝试将这个数字字符串转换为数字
--]]
print("2"+6)
print("2"+"6")
print("2"*"6")
-- print("error"+1) 报错 字符串链接使用的是 ..
print(123 .. 456)  -- .. 两边保留空格

--[[
使用 # 来计算字符串的长度 , 放在字符串前面 , 如下实例
--]]
len = "www.baidu.com"
print(#len)
print(#"www.baidu.com")

--[[
lua里 table的创建是通过 构造表达式 来完成,最简单的构造表达式是{},用来创建一个空表
也可以在表里添加一些数据,直接初始化表
local table1 = {}
local table2 = {"apple","pear","orange","grape"}
lua中的表 table 其实是一个关联数组 , 数组的索引可以是数字或者字符串
--]]
a = {}
a["key"] = "value"
key=10
a[key]=22
a[key] = a[key] + 11
for k,v in pairs(a) do
	print(k .. ":" .. v)
end
--[[
key:value
10:33

不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。
--]]
local tb1={"apple","pear","orange","grape"}
for key,val in pairs(tb1) do
	print("Key",key);
end
--[[
Key     1
Key     2
Key     3
Key     4
table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。
--]]

a3={}
for i=1,10 do
	a3[i]=i
end
a3["key"]="val"
for k,v in pairs(a3) do
	print(k .. ":" .. v)
end
print(a3["key"])
print(a3["none"])  -- nil

--[[
function 在lua中函数可以被看作是 第一类值 , 函数可以存在变量里
--]]
function factorial1(n)
	if n == 0 then
		return 1
	else
		return n*factorial1(n-1)
	end
end
print(factorial1(5)) --120
factorial2=factorial1
print(factorial2(5)) --120

--[[
function 可以以匿名函数(anonymous function)的方式通过参数传递:
--]]
function testFun(tab,fun)
	for k,v in pairs(tab) do
		print(fun(k,v))
	end
end
ttb={key1="val1",key2="val2"}
testFun(ttb,function(key,val)
	return key .. "=" .. val
end)
--[[
key1=val1
key2=val2
--]]

猜你喜欢

转载自my.oschina.net/LucasZhu/blog/1817438