Lua初識之非全域性函式 十二

2021-06-27 21:32:45 字數 1824 閱讀 5307

lua初識之非全域性函式

-----注意:在lua中呼叫乙個函式要在呼叫之前定義,否則出錯

-----表和函式放在一起

lib = {}

lib.foo = function(x, y)

return x + y

endlib.goo = function( x, y)

return x - y

endprint(lib.foo(3, 5)) --> 8

print(lib.goo(3, 5)) --> -2

--------------------------

--------使用表建構函式

lib =

print(lib.foo( 3, 5)) --> 8

print(lib.goo( 3, 5)) --> -2

---------------------------

lib ={}

function lib.foo(x, y)

return x + y

endfunction lib.goo(x, y)

return x - y

endprint(lib.foo(3, 5)) --> 8

print(lib.goo(3, 5)) --> -2

----------------------------

do local f = function(x)

return x

end

g = function(n)

return n * n

endlocal gg = function(m)

return f(m * m)

endprint(f(5)) --> 5

print(g(6)) --> 36

print(gg(8)) --> 64

end

print(g(9)) --> 81

--print(f(5)) --> 在模組外呼叫區域性函式 f()報錯

------------------------------------do

local function f(n)

print(n * n)

end f(10) --> 100

end--f(10) --> 區域性函式在外部使用報錯

---------------------------------

dolocal fact

fact = function(n)

if n == 0 then

return 1

else

return n * fact(n - 1)

--> 此處用到了 fact() ,要提前宣告 區域性函式local fact,

--> 不提前宣告的話,會直接在全域性函式中呼叫

end

endprint(fact(5)) --> 120

end-------------------------

-----尾調函式

do

function f(x)

return g(x) --> 此種用法為尾調函式,即返回值呼叫 其他函式

end

function ff(x)

g(x)

return --> 此種不屬於尾掉函式,

end

function g(n)

return n

endprint(f(5))

end----------------------

Lua初識之函式 十

lua初識之函式 a 表 a 將列印函式 print 賦值給 p a.p hello world 呼叫 a.p 函式既 print函式 b 表 b 引數 pp 賦值為 5 print b.pp 呼叫 pp 的值 m print m.num print m.numm print m.nummm fun...

Lua筆記10 非全域性函式

lua中函式可以作為全域性變數也可以作為區域性變數,我們已經看到一些例子 函式作為 table 的域 大部分 lua標準庫使用這種機制來實現的比如 io.read math.sin 這種情況下,必須注意函式和表語法 1.表和函式放在一起 lib lib.foo function x,y return...

LUA教程非全域性函式 22

lua中函式可以作為全域性變數也可以作為區域性變數,我們已經看到一些例子 函式作為table的域 大部分lua標準庫使用這種機制來實現的比如io.read math.sin 這種情況下,必須注意函式和表語法 1.表和函式放在一起 lib lib.foo function x,y return x y...