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