标签:
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