作者 | CodeData
top

CodeData 作者

CodeData 作者群

caterpillar

目前為自由工作者,喜好研究程式語言、框架、社群,從中學習設計、典範及文化。閒暇之餘 記錄所學,技術文件涵蓋 C/C++, Java, Ruby/Rails, Python, JavaScript, Haskell 等多個領域,出版電子書 Java SE 6 技術手冊Java Lambda TutorialJava TutorialPython TutorialEssential JavaScriptHaskell Tutorial

191Posts

認識 Lambda/Closure(6)一級函式與 Lambda 演算

By caterpillar | 2013/06/25

為什麼一級函式也稱為 Lambda?在回答這個問題之前,我們必須認識一下 Lambda 演算(也可以寫成 λ 演算)。簡單地說,在 λ 演算中,函式是僅帶一個參數的運算式。參數也可以接受帶有一個參數的函式。λ 演算中的函式是匿名的。

【Guava 教學】(3)高階排序概念的實現

By caterpillar | 2013/06/20

Guava 看來只是個程式庫,但它實際上包括了不少高階觀念,先前的兩篇文章 從避免使用 null 開始、命名明確的條件檢查,其實也都是在談這些高階觀念,想善用 Guava,瞭解這些觀念是必要的,不然,只是當個程式庫來使用,就沒辦法用得順手,這樣是有點可惜了。

認識 Lambda/Closure(5)Java 的稻草人提案

By caterpillar | 2013/06/18

終於要開始討論 Java 的 Lambda/Closure 了!不過這邊會先討論 2009 年提出的舊草案,討論這份舊草案,有助於我們瞭解為什麼 Lambda/Closure 會演變至今天 JDK8 所採取的形式。

【Guava 教學】(2)命名明確的條件檢查

By caterpillar | 2013/06/13

有多少次了呢?你總會對傳入的引數作一些檢查,像是某個管理物件的容器,你也許會有個 add 方法,可將傳入的 List 中元素逐一收納,你不希望傳入 null,或者傳入的 List 是空的…

認識 Lambda/Closure(4)從 Scala 中借鏡

By caterpillar | 2013/06/11

在步入靜態語言的世界時,我們都知道編譯器需要型態訊息,以便在編譯時期檢查出各種可能的型態不符之錯誤。這點很有助益,因為可以在撰寫程式的一開始就捕捉到一些錯誤,降低因錯誤而帶來的成本負擔。不過在討論到程式碼的簡潔度時,靜態語言中冗長的型態宣告常是令人詬病的對象。

【Guava 教學】(1)從避免使用 null 開始

By caterpillar | 2013/06/06

大多數開發者對 Guava 的認識,是從其中對Java 標準 API 中 Java Collections 框架功能的增強或補充,那是 guava-libraries 中的一部份,也就是 Guava Collections,在這部份,Java Collections 框架作者 Joshua Bloch 也曾對其提出相關建議。然而 guava-libraries 不僅僅是 Collections 的功能加強版,它還包括了許多進階特性,甚至有不少設計是借鏡了函數式程式設計的概念,像是不可變動結構、避免 null 等,對不少 Java 傳統開發者而言,這些概念都是新穎而陌生的,也因此無法對其作更進一步的善用。

認識 Lambda/Closure(3)Python 對 Lambda/Closure 的支援

By caterpillar | 2013/06/04

到目前為止你可以看到,如果函式是物件,那麼就可以: 被任何變數參考。 不只是被動地被呼叫,還可以主動地傳入函式中,取代某個可重用流程模版中的演算法。 建立 Closure 捕捉閒置變數(Free variable)並從函式中傳回。

認識 Lambda/Closure(2)什麼是 Closure?

By caterpillar | 2013/04/01

Closure 是擁有閒置變數(Free variable)的運算式。閒置變數真正扮演的角色依當時語彙環境(Lexical environment)而定。支援閉包的程式語言通常具有一級函式(First-class function)。建立函式不等於建立閉包。如果函式的閒置變數與當時語彙環境綁定,該函式才稱為閉包。

物件相等性(下)

By caterpillar | 2013/03/26

如果定義類別時使用了泛型,在定義物件相等性時,則有幾個地方要注意的…

認識 Lambda/Closure(1)從 JavaScript 的函式物件談起

By caterpillar | 2013/03/19

JDK8 中即將支援 Lambda 語法,那麼 Lambda 是什麼?該怎麼用?Lambda/Closure 在 Java 語言中一直不存在,因而對於 Java 開發者來說是陌生的。實際上,Lambda/Closure 早存在許多程式語言之中,對於尚不熟悉 Lambda/Closure 的 Java 開發者來說,可試著從其他具備 Lambda/Closure 的語言中,瞭解其概念及運用方式。

熱門技術文章

最新論壇文章