博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LUA学习笔记(第5-6章)
阅读量:3526 次
发布时间:2019-05-20

本文共 1579 字,大约阅读时间需要 5 分钟。

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, 50, 10, 40, 30})

它接受一个数组作为参数,并从下标1开始返回数组的所有元素

变长参数

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, 2, 3, 4))

通常一个函数在遍历其变长参数时只需要使用表达式{ ... }

但是变长参数中含有nil则只能使用函数select了

select("#", ...)返回所有变长参数的总数,包括nil

print(#{1, 2, 3, 4, 5, nil}) -->5

print(select("#", 1,2,3,4,5,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

转载地址:http://mifhj.baihongyu.com/

你可能感兴趣的文章