多重賦值
1)函式是最後乙個表示式,則保留函式所有的返回值
2)函式沒有返回值或者沒有足夠多的返回值,則nil補充
3)如果函式不是最後乙個表示式,則只保留的第乙個返回值返回值
函式呼叫時,使用圓括號,則只返回乙個值
closure:
可以將已有的api重新定義,並進行增強
tail recursion:
乙個函式呼叫是另乙個函式的最後乙個動作,如下fib函式,
function fib(n, r, c)if n == 0
then
return c
else
return fib(n-1, r+c, r);
endend
print(fib2(10, 1, 0));
Lua筆記11 迭代器和閉包
迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素。在lua中我們常常使用函式來描述迭代器,每次呼叫該函式就返回集合的下乙個元素。迭代器需要保留上一次成功呼叫的狀態和下一次成功呼叫的狀態,也就是他知道來自於 和將要前往 閉包提供的機制可以很容易實現這個任務。記住 閉包是乙個內部函式,它可以訪...
Lua的upvalue和閉包
lua函式 可以被當成引數傳遞,也可以被當成結果返回 在函式體中仍然可以定義內嵌函式。lua閉包是lua函式生成的資料物件。每個閉包可以有乙個upvalue值,或者多個閉包共享乙個upvalue數值。如果函式f2定義在函式f1中,那麼f2為f1的內嵌函式,f1為f2的外包函式,外包和內嵌都具有傳遞性...
Lua 迭代器和閉包
內容來自 lua程式設計 第四版 18.1節 迭代器和閉包。迭代器 iterator 是一種可以讓我們遍歷乙個集合中所有元素的 結構。在 lua 語言中,通常使用函式表示迭代器 每一次呼叫函式時,函式會返回集合中的 下乙個 元素。乙個典型的例子就是io.read,每次呼叫該函式時它都會返回標準輸入中...