| 数据类型 | 描述 |
|---|---|
| nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
| boolean | 包含两个值:false和true。 |
| number | 表示双精度类型的实浮点数 |
| string | 字符串由一对双引号或单引号来表示 |
| function | 由 C 或 Lua 编写的函数 |
| userdata | 表示任意存储在变量中的C数据结构 |
| thread | 表示执行的独立线路,用于执行协同程序 |
| table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
1.1 nil
nil类型表示一种没有任何有效值,他只有一个nil值
nil还有删除作用,给全局变量或table里变量赋一个nil值,就等同于删掉他
tab1 = {key1 = "val1", key2 = "val2", "val3"}
for k, v in pairs(tab1) do
print(k..'-'..v)
end
tab1.key1 = nil
for k, v in pairs(tab1) do
print(k..'-'..v)
end
.. 用于连接字符串
1.2 boolean(true, false)
1.3 number(number类型-double双精度)【2, 2.2, 0.2...】
1.4 string(字符串)
string1 = "this is string1"
html = [[
<html>
<head></head>
<body>
<a href="http://www.baidu.com">百度</a>
</body>
</html>
]]
print(html)
#string1 用于测试字符串长度
1.5 table
-- 创建一个空的table
local tbl1 = {}
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
1.6 function
function factorial1(n)
if n == 0 then
return 1
else
return n* factorial1(n-1)
end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
function 可以以匿名函数的方式传递参数
function testFun(tab,fun)
for k, v in pairs(tab) do
print(fun(k,v));
end
end
tab={key1="val1",key2="val2"}; testFun(tab, function(key,val)--匿名函数 return key.."="..val; end );
2. lua 变量
2.1 变量在使用前,必须在代码中进行声明,即创建改变量
a = 5 --全局变量
local b = 5 --局部变量
function joke()
c = 5
local d = 6
end
2.2 赋值变量
a = "hello" .. "world"
t.n = t.n + 1
多个变量同事赋值
a, b = 10, 2*x
交换变量的值
x, y = y, x
a[i], a[j] = a[j], a[i]
3. 循环
3.1 while循环
while(condition)
do
statements
end
eg1,
a = 10
while(a < 20)
do
print("a的值为:", a)
a = a+1
end
3.2 for 循环
for循环分为数值for循环和泛型for循环
3.2.1 数值for循环
for var=exp1,exp2,exp3 do
<执行体>
end
for i=1,f(x) do
print(i)
end
for i=10,1,-1 do
print(i)
end
3.2.2 泛型for循环
for i,v in ipairs(a) do
print(v)
end
在lua中pairs与ipairs两个迭代器的用法相近,但有一点是不一样的:
pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key