注释
lua
-- 这是单行注释
lua
--[[
这是多行注释
--]]
if语句
lua
if true then
print(true)
end
if else语句
nil是false
lua
if nil then
print("nil被当作true处理")
else
print("nil被当作false处理")
end
运算符
% 取余
^ 乘幂 A=10,A^2=100
// 整除运算符(>=lua5.3)
~= 不等于
and 与
or 或
not 逻辑非 A=true,B=false -》 not(A and B) 则为true
字符串
单行
lua
string1 = "this is string1"
string2 = 'this is string2'
字符串多行
2 个方括号 "[[]]" 来表示"一块"字符串
lua
html = [[
<html>
<head></head>
<body>
<a href="http://www.runoob.com/">菜鸟教程</a>
</body>
</html>
]]
字符串连接使用...,而不是+,+在lua里是运算符
lua
print("2".."6") --输出为26
print("2"+"6") --输出为8 +号会尝试将字符串转为number再进行运算
print("2"+"6a") --输出会报异常
使用 # 来计算字符串的长度,放在字符串前面
lua
len = "www.runoob.com"
print(#len) --输出为14
print(#"siki学院") --输出为8 一个中文字符占两个长度
循环 while
lua
while(true)
do
print("循环将永远执行下去")
end
表 table
1.类似c#的字典用法
lua
tab1={} --空表 {}构造表达式
print(tab1) --table:00A89600 输出的是存储地址
print(tab1.key1) --nil
tab2={key1=100,key2="value2"} --初始化一张表
print(tab2.key1) --100
print(tab2["key1"]) --100
--table的数据添加 table不会固定长度大小
tab1.key1="www.sikiedu.com"
tab1["key2"]="siki"
tab1[10]=1000
print(tab1["key1"]) --输出www.sikiedu.com
print(tab1.key1) --输出www.sikiedu.com
print(tab1.key2) --输出siki
print(tan1[10]) --输出1000
2.类型c#的数组写法
lua使用索引的地方是从1开始,而不是0
lua
tab3={"apple","pear","orange","grape"} --默认key为1,2,3,4
print(tab3[2]) --输出pear lua的索引从1开始,而不是0
函数 function
c#里的函数(阶乘)
csharp
int fact(int n){
if(n==1)
return n;
else
return n*fact(n-1);
}
lua函数写法 function开始,end结束
lua
function fact(n)
if n==1
return n;
else
return n*fact(n-1);
end
end
print(fact(3)); --输出6
fact2=fact; --把函数fact赋给fact2
print(fact2(3)); --输出6
把函数作为参数传递(类似c#的委托,但lua没有委托)
lua
function testFun(tab fun)
for k,v in pairs(tab) do
fun(k,v)
end
end
tab={key1="val1",key2="val2"}
function f1(k,v)
print(k..":"..v)
end
testFun(tab,f1) --输出 key1:val1 key2:val2
function f2(k,v)
print(k.." "..v)
end
testFun(tab,f2) --输出 key1 val1 key2 val2
--匿名函数 (不用写函数名)
--输出 key1-val1 key2-val2
testFun(tab,
function (k,v)
print(k.."-"..v)
end
)