《Lua程式設計》第6章 深入函式 學習筆記

2021-09-08 18:51:18 字數 796 閱讀 3027

在lua中,函式是一種「第一類值(first-class value)」,它們具有特定的詞法域(lexical scoping)。

「詞法域」:函式可以潛逃在另乙個函式中,內部的函式可以訪問外部函式中的變數。它允許lua在應用各種函式式語言(functional-language)中的強大程式設計技術。

lua中最常見的函式編寫方式,如:

function foo (x) return 2*x end

只是一種所謂的「語法糖」而已。也就是說,這只是以下**的一種簡化書寫形式:

foo = function (x) return 2*x end

可以將表示式「function(x) end」視為一種函式的構造式,將這種函式構造式的結果稱為一種函式的構造式。

【匿名函式示例】

table哭啼攻了乙個函式table.sort,它接受乙個table並對其中的元素排序。

network = ,,,

}如果想以name欄位、按反向的字元順序來對這個table排序的話,只需這麼寫:

table.sort(network, function (a,b) return (a.name > b.name) end)

像sort這樣的函式,接受另乙個函式作為實參的,稱其為乙個高階函式(high-order function)。

6.1 closure(閉合函式)

6.2 非全域性的函式(non-global function)

……6.3 正確的尾呼叫(proper tail call)

由於「尾呼叫」不會消耗棧空間,所以乙個程式可以擁有無數巢狀的「尾呼叫」。

C Primer 第6章 函式 學習筆記

1.編寫 呼叫函式 a 乙個典型的函式定義包括以下部分 返回型別 函式名字 由0個或多個形參組成的列表以及函式體。b 我們通過呼叫運算子執行函式,它作用於乙個表示式,該表示式是函式或者指向函式的指標。呼叫表示式的型別就是函式的返回型別 c 函式的呼叫完成兩項工作 一是用實參初始化函式對應的形參,二是...

Lua程式設計第4版第6章課後練習答案

6.1 略 6.2 用lselect 2,函式 6.3function f63 local t table.pack t t.n nil t.n t.n 1return table.unpack t end print f63 2 3,4 5 6.4 說下思路 pair每乙個元素,把每個元素都隨機從...

第11章 函式和函式式程式設計 6

11.9 遞迴 如果乙個新的呼叫能在相同過程中較早的呼叫結束之前開始,那麼該過程就是遞迴。def factorial num if num 1 return num else return num factorial num 1 factorial 20 2432902008176640000l f...