歡迎您光臨本站 註冊首頁

木蘭程式語言重現:匿名函式,lambda 表示式初步

←手機掃碼閱讀     admin @ 2020-07-17 , reply:0

之前實現了基本的函式功能,本週支援瞭如下的 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
 

程式碼統計

下面是幾個主要部分的程式碼行數統計,格式為:上週->本週。

  • 測試
    • 木蘭測試用例:1075 -> 1090
    • 執行測試.py,檢驗所有木蘭測試程式碼片段:145 -> 148
    • 未變
      • test語法樹.py,確保生成的語法樹與原始版本一致:63
  • 實現:1941 -> 2075
    • 分析器/語法分析器.py:824 -> 886
    • 分析器/語法樹.py功用/除錯輔助.py,包括對 ast 庫的中文封裝:260 -> 271
    • 分析器/詞法分析器.py:184 -> 187
    • 環境.py,載入木蘭模組:87 -> 88
    • 未變
      • 演示高亮.py:98
      • 中.py,主程式:35

[admin ]

來源:OsChina
連結:https://www.oschina.net/news/117268/grasspy-updated
木蘭程式語言重現:匿名函式,lambda 表示式初步已經有146次圍觀

http://coctec.com/news/soft/show-post-243654.html