之前實現了基本的函式功能,本週支援瞭如下的 lambda 表示式:
邊長 -> 邊長 * 邊長
用->
似乎符合數學中“對映”的表示(下摘自 wiki “Lambda calculus”頁):
可以在 map、filter 中使用:
print(list(map(邊長 -> 邊長 * 邊長, [1, 2, 3])))
=> [1, 4, 9]
也可以在塊中包含多個語句:
print(list(map(邊長 -> {
面積 = 邊長 * 邊長
return 面積
}, [1, 2, 3])))
如果這些語句較短(中文命名的識別符號往往更短),也可以用分號分隔後放在一行內:
print(list(map(邊長 -> { 面積 = 邊長 * 邊長; return 面積 }, [1, 2, 3])))
暫時只添加了單個形參的 lambda 表示式,還有些用法仍在摸索。
還有一種類似功能的匿名函式寫法:
print(list(map(func (邊長) { 面積 = 邊長 * 邊長; return 面積 }, [1, 2, 3])))
它已經支援多形參,也可以在呼叫時直接跟實參:
print(func (長, 寬) {
面積 = 長 * 寬;
return 面積
}(3, 4))
=> 12
下面是幾個主要部分的程式碼行數統計,格式為:上週->本週。
執行測試.py
,檢驗所有木蘭測試程式碼片段:145 -> 148test語法樹.py
,確保生成的語法樹與原始版本一致:63分析器/語法分析器.py
:824 -> 886分析器/語法樹.py
,功用/除錯輔助.py
,包括對 ast 庫的中文封裝:260 -> 271分析器/詞法分析器.py
:184 -> 187環境.py
,載入木蘭模組:87 -> 88演示高亮.py
:98中.py
,主程式:35
[admin
]