在lua中,函數(shù)是一種“第一類值”,它們具有特定的詞法域。
第一類值:表示在lua中,函數(shù)與其他傳統(tǒng)類型的值(數(shù)字和字符串)具有相同的權(quán)利,函數(shù)可以存儲(chǔ)到變量中(無論全局變量還是局部變量)或者是table中,可以作為實(shí)參傳遞給其他函數(shù),還可以作為其他函數(shù)的返回值。
詞法域:是指一個(gè)函數(shù)可以嵌套在另一個(gè)函數(shù)中。內(nèi)部的函數(shù)可以訪問外部函數(shù)中的變量。
看例子代碼:
復(fù)制代碼 代碼如下:
do
function foo(a, b, c)
print(a, b, c);
end
local c = foo;
c(2, 3, 4);
end
輸出的結(jié)果是:2, 3, 4
例子:
復(fù)制代碼 代碼如下:
do
function derivative(f, delta)
delta = delta or 0.01
print("delta: ", delta);
return function (x)
return (f(x + delta) - f(x)) / delta
end
end
local c = derivative(math.sin)
print(math.cos(10), c(10))
end
在上面的例子中,
復(fù)制代碼 代碼如下:
c = function(x) return (math.sin(x + 0.1) -math.sin(x)) / 0.01
因?yàn)椋?br /> 復(fù)制代碼 代碼如下:
local c = derivative(math.sin)
將:
復(fù)制代碼 代碼如下:
f = math.sin