Lua 函数入门

语法:

       

function func_name (arguments-list)
	statements-list
	end

返回多个数:

       1.当作为表达式调用函数时,作为最后一个参数或者仅有的一个参数时,根据变量个数,尽可能多的返回多个值,不足的补nil,超出就丢弃。其他情况,函数返回第一个值。

function test()
	return 2,3,4,5
	end
-- 作为仅有的参数,返回多个值
x,y=test()
print(x,y)
-- 作为最后一个参数,返回多个值
x,y,z=10,test()
print(x,y,z)
-- 一般情况,函数返回一个值
x=test()
print(x)

      2.作为函数参数调用的时候,和多值赋值是相同的。可以用参数_占位来代替函数,就比较容易理解了。

function test()
	return 2,3
	end
-- 输出:2  3
print(test())
-- 输出:test  2  3
print("test:",test())
-- 输出:2  test
print(test(),"test")
      3.在表构造函数中初始化的时候,也和多值赋值相同。
function test()
	return 2,3
	end
t={test()}
-- 输出:2  3
print(t[1],t[2])
t={test(),"test"}
-- 输出:2 test
print(t[1],t[2])
t={"test",test()}
-- 输出:2  3
print(t[2],t[3])

给出一个求最值的实例:

--返回表数据的最值
function mostvalue(a)
	local max
	local min
	for i,val in ipairs(a) do
		--初始化
		if i==1 then
			max,min=val,val
			end
		--判断
		if val>max then
			max=val
			elseif val <min then
			min=val
			end
		end
	return max,min
end

local m={7,2,3,5}
print(mostvalue(m))

可变参数:

使用3点(...)表示函数有可变的参数,放在arg表中。arg表中,带有域n表示参数的个数。

       1.全为可变参数:

-- 输入的参数数目可变
function myprint(...)
	for i,v in ipairs(arg) do
		print(i,arg[i])
		end
	end

myprint(1)
myprint(1,2)
       2.带固定参数和可变参数:

-- 固定参数:a
function myprint(a,...)
	print("a:",a)
	for i,v in ipairs(arg) do
		print("arg:",i,v)
		end
	end

myprint(10,2)
myprint(10,2,3)


你可能感兴趣的:(lua)