scala類型推斷及庫方法設計原則和==與java有何差異

scala類型推斷java

方法msortSwapped(abcd)(_>_)app

一般,一旦有須要推斷多臺方法類型參數的任務時,類型推斷器就只參考第一個參數列表中全部參數類型,但不會參考以後其餘參數。由於方法msortSwapped是柯里化的方法,帶兩個參數列表,因此第二個參數(也就是說,那個函數值)將不會用來作決定方法參數的參考。函數

所以這種類型推斷方案也隱含了以下庫方法設計原則:若是須要把參數設計爲若干非函數值及一個函數值的某種多態方法,須要把函數參數放在柯里化參數列表的最後面。這樣一來,方法的正確類型就能夠經過非函數參數類推斷出來,而且這個類型能夠轉而用來完成函數參數類型檢查。從而使得方法的使用者能夠避免提供更多類型信息並能編譯出更簡潔的函數字面量。spa

==與java有何差異scala

scala的==遵循的比較規則:設計

首先檢查左側是否爲null,若是不是,調用左操做數據equals方法。因此,精確的比較取決於作操做的equals方法定義。因爲自動的null檢查,所以不須要手動再檢查一次了。對象

java裏==既能夠比較原始類型也能夠比較引用類型。對於原始類型,java的==比較值的相等性,與scala一致。二對於引用類型,java的==比較了引用類型的相等性,也就是說比較的是兩個變量是否都指向JVM堆裏的同一個對象。scala也提供了這種機制,名字是eq。不過,eq和它的反義詞neq,僅僅應用於能夠直映射到java的對象。編譯

相關文章
相關標籤/搜索