1. 語言的演進java
函數式編程 與 面向對象 編程 對於代碼的重用方式是不一樣的,面向對象喜歡建立有不少操做的各類數據結構,函數式變成的數據結構卻不多。編程
函數式編程 重用表如今 函數的通用性上,面向對象鼓勵針對類建立方法,從類的關係中 發現重複出現的模式,並加以複用。數據結構
100 個 函數操做一種數據結構的組合,要好過10個函數操做10中數據結構。編程語言
函數式編程: 少許的數據結構對應大量的 操做。函數式編程
2. scala 從 設計上就支持 運算符重載,考慮到了可塑性。函數
3. 函數式的數據結構scala
java 中習慣使用異常來處理錯誤,語言自己也提供了異常的建立和傳播機制,而不少函數式編程語言並無一場處理機制。 設計
函數式變成傾向於使用沒有反作用的純函數,而異常違背了這一前提。拋出異常的行爲自己就是一種反作用。對象
函數式語言以操做值爲其根本,它提供的解決方案是直接在返回值中代表錯誤,並作出響應。it
scala 中 提供了 Either 類。(左值 右值)
Either 類 設計規定了 其要麼持有左值,要麼持有右值。絕對不會兩邊都有。 錯誤處理是Either 類的主要用途。
而除了Either 外,還有一種Option 類,用來表示異常處理中較爲簡單的場景,它的值 要麼是none,要麼是some,表示成功返回。