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)
ifconditionsthen
then-part
end;
(B)
ifconditionsthen
then-part
else
else-part
end;
(C)
ifconditionsthen
then-part
elseifconditionsthen
elseif-part
..--->多个elseif
else
else-part
end;
18. While语句
whileconditiondo
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