变量
先声明,后使用。
三种类型:全局变量(默认),局部变量(作用范围:从声明开始,到所在的语句块结束),表中的 域
-- test var
a = 5;
local b = 5
function testInit()
c = 6;
local d = 7
end
testInit();
b = 9
do
c = 8
end
d = "u"
print(a,b,c,d)
变量赋值
a = 变量值。
a,b = 1,2
a = 1+2
常用:x , y = y, x a,b,c = 1,2
变量个数 > 值的个数:按照变量的个数 补足 nil。
a,b,c = 1,2,3,4
变量个数<值的个数:多余的值会被忽略。
a,b,c = 0
a = 0,b = nil, c=nil
多变量赋值:还可以用于函数的返回, 参数值互换。 a,b = func();
需要赋值给变量,如果能用局部变量,尽量用局部变量。
索引
对table中元素的访问。
tab["key"] tab.key
print("-----------索引--------------") tab = {key1 = "中国",key2 = "美国"} print(tab["key1"])
print(tab.key2)
循环
用途:做一些有规律的重复操作。
循环体 :一组被重复执行的语句。循环条件 :判断能否继续循环。
while循环
while(循环条件) do
业务代码;
对循环条件的控制; end
a = 1
while(a<5) do
print(a)
a = a+1 end
for循环
数值for循环:
for var=exp1,exp2,exp3 do 循环体
end
var的值,从exp1一直到exp2,步长是exp3(是可选的,默认是1)
print("----for----")
for i=1,10,2 do
print(i)
end
exp1,exp2,exp3 只在循环开始前计算一次。
泛型for循环:
是通过迭代器进行的。
a = {"one","two","three"}
for k,v in pairs(a) do print(v)
end
repeat until
repeat
循环体
until(条件)
先执行循环体,直到满足条件。如果条件为false,继续执行循环体,如果条件为true,则跳出循 环。
流程控制
if()
print("-----------if-------------") a = 1
if(a == 1) then
print(a.."是1")
end
0 是 true。
函数
函数定义
print()
功能:1。完成指定的任务。2。计算并返回值(可以返回多个值)。 函数的范围(local ,缺省)function 函数名称(参数列表)
函数体;
return 结果 end
定义一个函数:实现求两个数的最大值。
print("---------------函数定义:求最大值---------------") function testMax(num1,num2)
if (num1 > num2) then
result = num1; else
result = num2; end
return result; end
print("15,20中的最大值是:"..testMax(15,20))
函数可以作为参数进行传递。
例子:自定义打印函数。
print("---------------函数定义:自定义打印函数---------------")
myPrint = function(p)
print("重新的打印函数:",p) end;
myPrint("test");
function add(num1,num2,myPrintParam)
result = num1 + num2;
myPrintParam(result); end
add(2,3,myPrint)
多值返回
print("---------------多值返回---------------")
startIndex,endIndex = string.find("www.mashibing.com","ma") print(startIndex , endIndex)
例子:找出一个数组中,最大的值,以及它的索引。
print("---------------找出数组中,最大的值,以及索引---------------") function testMax(a)
local iIndex = 1;
local iValue = a[iIndex];
for i,v in pairs(a) do
if v > iValue then
iIndex = i;
iValue = v;
end
end
return '最大值的索引:'..iIndex , '最大值是:'..iValue end
print(testMax({1,4,8,2,7,10,6,3}))
可变参数
运算符
算术运算符
+ 加
- 减
* 乘
/ 除
% 取余 ^ 乘幂 - 负号
关系运算符
== 等于。
~=不等于
> 大于
< 小于
>= 大于等于 <= 小于等于
逻辑运算符
and or
not
其他运算符
.. 连接符
# 计算字符串或者 表 的长度。