标签:
http://blog.csdn.net/eric_xjj/article/details/9209947
在Lua中,and逻辑运算符如果第一个参数是false,则返回false,不会执行第二个参数的代码(即使第二个参数是一个错误的表达式,也能顺利运行);如果第一个参数是true,返回第二个参数的值。
or运算类似AND
在Lua中,变量默认是全局的,这通常导致一些调试困难,最好尽量显式的在变量名之前加上 local 关键字声明该变量为局部变量。
gNumber = 10 --这是一个默认全局的变量 print(type(gNumber)) --输出结果为number gNumber = nil --之前的number类型gNumber = 10变量被释放 print(type(gNumber)) --输出结果为nil function LocalVarFunction () local pTable = {} --用local关键字声明一个局部变量,这个变量将在执行LocalVarFunction方法后销 。。。。。。 end
table还可以使用其他的值作为索引值,并且能用数字跟其他值同时作为同一个table的索引
gTable = {} gTable.name = "eric" gTable.gender = "man" gTable.phonenumber = "0000000000" gTable[1] = "公司" gTable[2] = "部门" for index, value in pairs(gTable) do print(index, value) end --[[ 输出结果如下: 1 公司 2 部门 phonenumber 0000000000 gender man name eric --]]
数字的话用【】,非数字用.点
table的索引还可以是table本身,这样就组成了一个多维table或多维字典。
gTable = {} gTable.name = "eric" gTable.gender = "man" gTable.phonenumber = "0000000000" gTable[1] = "公司" gTable[2] = "部门" gTable.hobby = {"跑步", "读书", "游戏", "动漫"} -- 多维table,可以通过gTable.hobby[1]的方式访问.即gTable.hobby本身也是一个table gTable.secTable = {} gTable.secTable.job = "程序员" gTable.secTable.label = "写代码的" gTable.secTable.description = "职责是实现产品的逻辑" for index, value in pairs(gTable) do print(index, value) if ("table" == type(value)) then for idx, var in pairs(value) do print("二维table:", idx, var) end end end --[[ 输出结果如下: 1 公司 2 部门 hobby table: 0x7fdceac14bc0 二维table: 1 跑步 二维table: 2 读书 二维table: 3 游戏 二维table: 4 动漫 phonenumber 0000000000 gender man secTable table: 0x7fdceac15100 二维table: label 写代码的 二维table: description 职责是实现产品的逻辑 二维table: job 程序员 name eric --]]
table.getn()函数,返回table中元素的个数。如:
可以看到,默认table的下表用数字来表示
在Lua脚本中,函数是以function关键字开始,然后是函数名称,参数列表,最后以end关键字表示函数结束。需要注意的是,函数中的参数是局部变量,如果参数列表中存在(...)时,Lua内部将创建一个类型为table的局部变量arg,用来保存所有调用时传递的参数以及参数的个数(arg.n)。
function PrintFriendInfo (name, gender, ...) local friendInfoString = string.format("name:%s gender:%d",name,gender) if 0 < arg.n then for index = 1, arg.n do friendInfoString = string.format("%s otherInfo:%s",friendInfoString, arg[index]) end end print(friendInfoString) end PrintFriendInfo ("eric", 1, "程序员","2b", 50) --输出结果为: -- name:eric gender:1 otherInfo:程序员 otherInfo:2b otherInfo:50
这里arg.n=3
Lua函数的返回值跟其他语言比较的话,特殊的是能够返回多个返回值
function GetUserInfo () local name = "eric" local gender = 1 local hobby = "动漫" return name, gender, hobby end print(GetUserInfo()) --输出结果:eric 1 动漫
loadstring(pString)()函数可以直接执行pString字符串组成的Lua代码,但不提供报错功能。
dofile(filename)函数的功能是载入并立刻执行Lua脚本文件。可以用来载入定义函数的文件或者数据文件、或立即执行的Lua代码。dofile函数会将程序的执行目录作为当前目录。如果要载入程序执行目录的子目录里的文件,需要加上子目录的路径。
标签:
原文地址:http://www.cnblogs.com/notlate/p/4174690.html