1. 每个语句结尾的分号(;)是可选的,但如果同一行有多个语句最好用;分开
a = 1 b = a*2 -- ugly, but valid
2. 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil.
print(b) --> nil
3. Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。函数type可以测试给定变量或者值的类型。
print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
print(type(type(X))) --> string
4. 在控制结构的条件中除了false和nil为假,其他值都为真。所以Lua认为0和空串都是真
5. Lua中字符串是不可以修改的,你可以创建一个新的变量存放你要的字符串,如下:
a = "one string"
b = string.gsub(a, "one", "another") -- change string parts
print(a) --> one string
print(b) --> another string
6. 可以使用单引号或者双引号表示字符串
a = "a line"
b = 'another line'
7. ^ 幂运算 如n^2表示n的2次方
8. 不等于:~=
9. 连接运算符:.. --两个点
10. 数组下标从1开始
11. 表的构造
12. Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a, b = 10, 2*x <--> a=10; b=2*x
13. 我们可以这样进行交换变量的值:
x, y = y, x -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[i]'
14. a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
例如:
a, b, c = 0, 1
print(a,b,c) --> 0 1 nil
a, b = a+1, b+1, b+2 -- value of b+2 is ignored
print(a,b) --> 1 2
a, b, c = 0
print(a,b,c) --> 0 nil nil常见错误,需要为每个变量赋值
15.a, b = f()
f()返回两个值,第一个赋给a,第二个赋给b。
16. 应该尽可能的使用局部变量,有两个好处:
1. 避免命名冲突
2. 访问局部变量的速度比全局变量更快.
17. If语句三种形式
(A)
if conditions then
then-part
end;
(B)
if conditions then
then-part
else
else-part
end;
(C)
if conditions then
then-part
elseif conditions then
elseif-part
.. --->多个elseif
else
else-part
end;
18. While语句
while condition do
statements;
end;
19. for语句有两大类:
第一, 数值for循环:
for i=1,4 do
print(i)
end //打印4次,i从1到4
for i=4,1,-1 do
print(i)
end //i从4到1,-1是自减1?换成0会死循环
第二, 范型for循环:
revDays = {}
for i,v in ipairs(days) do
revDays[v] = i
end
20. -- 返回Lua出现的初始位置跟结束位置,下标从1开始
s, e = string.find("hello Lua users", "Lua")
print(s, e) --> 7 9