-recurrsive
function fib(n) if n < 2 then return 1 end return fib(n - 2) + fib(n - 1) end
-closure
示例一 function newCounter() local i = 0 return function() -- anonymous function i = i + 1 return i end end c1 = newCounter() print(c1()) --> 1 print(c1()) --> 2 示例二 function myPower(x) return function(y) return y^x end end power2 = myPower(2) power3 = myPower(3) print(power2(4)) --4的2次方 print(power3(5)) --5的3次方
-函数的返回值
可以一条语句上赋多个值
name, age, bGay = "haoel", 37, false, "haoel@hotmail.com"
因为只有3个变量,所以最后一个被舍去
函数可以返回多个值
function getUserInfo(id) print(id) return "haoel", 37, "haoel@hotmail.com", "https://coolshell.cn" end name, age, email, website, bGay = getUserInfo()
这里没有传id进去,所以函数中的id输出为nil,而且返回的值里也没有bGay的值,所以bGay也是nil
-局部函数
函数前加上local就是局部函数
以下两个函数是一样的
function foo(x) return x^2 end foo = function(x) return x^2 end