参照

注释

 --这是单行注释
 --[[ 这是多行注释 --]]

if语句

if true thenprint(true)end

if else语句

nil是false

if nil thenprint("nil被当作true处理")elseprint("nil被当作false处理")end

运算符

% 取余
^ 乘幂 A=10,A^2=100
// 整除运算符(>=lua5.3)

~= 不等于
and 与
or 或
not 逻辑非 A=true,B=false -》 not(A and B) 则为true

字符串

单行

string1 = "this is string1"string2 = 'this is string2'

字符串多行
2 个方括号 “[[]]” 来表示”一块”字符串

html = [[菜鸟教程]]

字符串连接使用…,而不是+,+在lua里是运算符

print("2".."6")--输出为26print("2"+"6")--输出为8+号会尝试将字符串转为number再进行运算print("2"+"6a")--输出会报异常

使用 # 来计算字符串的长度,放在字符串前面

len = "www.runoob.com"print(#len)--输出为14print(#"siki学院") --输出为8一个中文字符占两个长度 

循环 while

while(true)doprint("循环将永远执行下去")end

表 table

1.类似c#的字典用法

tab1={} --空表{}构造表达式print(tab1)--table:00A89600 输出的是存储地址print(tab1.key1)--niltab2={key1=100,key2=“value2”} --初始化一张表 print(tab2.key1) --100print(tab2["key1"]) --100--table的数据添加table不会固定长度大小tab1.key1="www.sikiedu.com"tab1["key2"]="siki"tab1[10]=1000print(tab1["key1"]) --输出www.sikiedu.comprint(tab1.key1) --输出www.sikiedu.comprint(tab1.key2) --输出sikiprint(tan1[10]) --输出1000

2.类型c#的数组写法
lua使用索引的地方是从1开始,而不是0

tab3={"apple","pear","orange","grape"} --默认key为1,2,3,4print(tab3[2])--输出pear lua的索引从1开始,而不是0

函数 function

c#里的函数(阶乘)

int fact(int n){if(n==1)return n;elsereturn n*fact(n-1);}

lua函数写法 function开始,end结束

function fact(n)if n==1return n;elsereturn n*fact(n-1);endendprint(fact(3)); --输出6fact2=fact; --把函数fact赋给fact2print(fact2(3)); --输出6

把函数作为参数传递(类似c#的委托,但lua没有委托)

function testFun(tab fun)for k,v in pairs(tab) dofun(k,v)endendtab={key1="val1",key2="val2"}function f1(k,v)print(k..":"..v)endtestFun(tab,f1)--输出 key1:val1key2:val2function f2(k,v)print(k.." "..v)endtestFun(tab,f2) --输出 key1 val1key2 val2--匿名函数 (不用写函数名)--输出 key1-val1 key2-val2testFun(tab,function (k,v)print(k.."-"..v)end)