x = a or b
如果a为真则x = a
如果a为假则x = b
print(a .. b)
任何非nil类型都会被连接为字符串,输出
多重返回值
local s,e = string.find("Hello World","Wo")
print(s .. " : " .. e)
自定义函数
function getMax(arr) local maxValue,maxPos maxValue = arr[1] maxPos = 1 for i=1,#arr do if arr[i] > maxValue then maxValue = arr[i] maxPos = i end end return maxPos,maxValueendprint(getMax{20,50,10,40,30})
unpack函数
print(unpack{20,30})
变长参数
function add( ... ) local s = 0 for i,v in ipairs{ ... } do s = s + v end return sendprint(add(1,2,3,4))
返回所有实参
function add( ... ) return ...endprint(add(1,4))
通常一个函数在遍历其变长参数时只需要使用表达式{ ... }
但是变长参数中含有nil则只能使用函数select了
select("#",...)返回所有变长参数的总数,包括nil
print(#{1,4,5,nil}) -->5
print(select("#",1,nil)) -->6
具名实参
函数调用需要实参表和形参表进行匹配,为了避免匹配出错,而使用具名实参。
例:
function Window( options ) _Window(options.Title,options.x or 0,options.y or 0,options.wIDth,options.height,options.background or "white",options.border )endw = Window{x = 0,y = 0,wIDth = 300,height = 200,Title = "Lua",background = "blue",border = true }
深入函数
LUA中函数与所有其他值一样都是匿名的:当讨论一个函数时,实际上是在讨论一个持有某函数的变量。
a = {p = print}a.p("Hello")
print = os.date()
a.p(print)
一个函数定义实际就是一条语句(赋值语句)
将匿名函数传递给一个变量
foo = function() return "Hello World" end
print(foo())
等价于我们常见的
function foo()
return "Hello World"
end
匿名函数
arr = { {name = "A",score = 99},{name = "B",score = 95},{name = "C",score = 96},{name = "D",score = 97},}table.sort(arr,function (a,b) return (a.name < b.name) end)for i,v in ipairs(arr) do print(v.name)end总结
以上是内存溢出为你收集整理的LUA学习笔记(第5-6章)全部内容,希望文章能够帮你解决LUA学习笔记(第5-6章)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)