Lua 函数

function add(a,b)
	return a + b
end
sub = function(a, b)
	return a - b
end
print(add(1, 2))
print(sub(1, 2))

运行结果
3
-1

tab = {}
tab.square = function(a)
	return a * a
end
print(tab.square(2))

运行结果
4

tab = {}
tab = {
square = function(a)
	return a * a
end
}
tab = {}
function tab.square(a)
	return a * a
end
function mul(...)
	local s = 1
	for k, v in ipairs(arg) do
		s = s * v
	end
	return s
end
print(mul(2,2,3)) 

运行结果
 12

function test()
	local a = 0
	return function()	-- 闭包
		a = a + 100
		return a
	end
end
c  = test()    -- c保存的是闭包函数
print(c())
print(c())
print(c())

s = test()	-- 由于局部变量a,所以返回闭包不一样
print(s())
print(s())

运行结果
100
200
300
100

200

尾调用
       
一个函数的最后一个动作是调用另外一个函数

function test()
	return 100
end

function test1()
	return test()	-- 尾调用
end

function test1()
	return test()+100	-- 不是尾调用
end
函数作为参数调用
tab = {
	{seq = 5, val = "c"},
	{seq = 2, val = "a"},
	{seq = 4, val = "b"}
}

for k,v in ipairs(tab) do
	print(v.seq,  v.val)
end

print("-------------------")
table.sort(		-- 排序
tab,
function(a,b)
	return a.seq < b.seq
end
)

for k,v in ipairs(tab) do
	print(v.seq, v.val)
end
运行结果
5 c
2 a
4 b
-------------------
2 a
4 b

5 c

function func(a)
	return a + 100
end

function test(f,a)
	return f(a)
end

print(test(func,10))
运行结果
110


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值