lua语言中的函数是第一类值
a = {p = print}
a.p("Hello world") --> Hello world
print = math.sin -> 'print'现在指向sin函数
a.p(print(1)) -->0.8414709848079
function foo(x) return 2 * x end <--> foo = function(x) return 2*x end
在lua中所有的函数都是匿名的
比如print,实际上指的是保存该函数的变量
定义局部函数:
local function f()
body
end
local function foo(params)body end <-->local foo;
foo = function(params)body end
这是一种语法糖
前向声明,类似c++
如:
local f --前向声明
local function g()
some code f() some code
end
function f()
some code g() some code
end
词法定界:
当函数A被包含于函数B时,A能够访问B的所有局部变量,这种特性叫做词法词法定界
function sortbygrade(names, grades)
table.sort(names,function(n