1.print
print("hello wold")
2.注释
--单行注释 --[[ --]]多行注释
3.标志符
Lua 标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。
最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。比如_VERSION
Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。以下列出了一些正确的标示符:
4.全局变量
默认申明的是全局变量,类似C#中的public.如果要申明局部变量,用local表示
5.字符串操作
用两个双引号或单引号来表示字符串。
和C#比较大的一个区别在于一组字符串可以通过[[]]两组中括号来表示。比如
str=[[sadasdsadsad
ddadadasda]]
在C#中,两个字符串的拼接可以通过"ddd"+"aaa"实现,但在lua中,通过..来进行拼接操作。
6.表table
和C#很重要的一个区别在于lua中表的下标是从1开始的
目前已知两种表达方式
<1>
tab1={key1="apple",key2="banana"}
切记这个相当于主键为字符串的表。可以通过两种方式范文里边的值
tab1[key1]或者tab1.key1
<2>
tab1={"apple","banana"}
这样有点像字符串数组,可以直接通过tab1[1](apple)来访问
<3>想全部输出表中的值,可以通过
for k,v in pairs(tab1) do
print(k.."--"..v)
end
<4>表的增加,修改和删除
就以tab1={key1="apple",key2="banana"}举例
增加:tab1["key3"]=“orange”
修改:tab1["key1"]=1000
删除:tab1["key2"]=nil
在创建表时,主键不用引号,但它相当于字符串作为主键。在查看或修改表时,需要带引号去查找。
7.function 方法
例子:比较大小
function compare(a,b)
if(a>=b) then
return a
else return b
end
end
例子:求N的阶乘(递归)
function factorial(n)
if(n==1) then
return n;
else
return n*factorial(n-1)
end
end 和C#的区别在于方法不需要通过大括号来封装,而是通过end,并且不需要定义方法的返回值类型
***方法作为参数传递***
C#不是没有把方法作为参数传递,比如委托,Action。在lua没有委托这一概念, 因为参数类型全部都不指定类型,所以方法作为一种参数传递后,优点在于书写起来特别方便,但缺点也很明显,编译时不会报错。运行时如果不合规范才会报错
例如上面可以把表和递归方法全部作为参数传到某一个方法中,实现求出表中所有值的阶乘 function MyFun(tab,fun)
for k,v in pairs(tab) do
print(k.."--Fac"..v..":"..fun(v))
end
end MyFun(tab2,Factorial)
***匿名方法*** 就是外部没有申明该方法,方法作为参数传入时直接在参数中创建。一般来说适用于较简单且不会在外部调用的方法。例如上面的第二个参数,之前传的是求阶乘的方法,现在传入一个简单的方法。
MyFun(tab2,
function (v)
return v
end
)