scala类型推断及库方法设计原则和==与java有何差别
scala類型推斷
方法msortSwapped(abcd)(_>_)
通常,一旦有需要推斷多臺方法類型參數的任務時,類型推斷器就只參考第一個參數列表中所有參數類型,但不會參考之后其他參數。因為方法msortSwapped是柯里化的方法,帶兩個參數列表,所以第二個參數(也就是說,那個函數值)將不會用來做決定方法參數的參考。
因此這種類型推斷方案也隱含了如下庫方法設計原則:如果需要把參數設計為若干非函數值及一個函數值的某種多態方法,需要把函數參數放在柯里化參數列表的最后面。這樣一來,方法的正確類型就可以通過非函數參數類推斷出來,并且這個類型可以轉而用來完成函數參數類型檢查。從而使得方法的使用者可以避免提供更多類型信息并能編譯出更簡潔的函數字面量。
==與java有何差別
scala的==遵循的比較規則:
首先檢查左側是否為null,如果不是,調用左操作數據equals方法。所以,精確的比較取決于做操作的equals方法定義。由于自動的null檢查,因此不需要手動再檢查一次了。
java里==既可以比較原始類型也可以比較引用類型。對于原始類型,java的==比較值的相等性,與scala一致。二對于引用類型,java的==比較了引用類型的相等性,也就是說比較的是兩個變量是否都指向JVM堆里的同一個對象。scala也提供了這種機制,名字是eq。不過,eq和它的反義詞neq,僅僅應用于可以直映射到java的對象。
轉載于:https://www.cnblogs.com/Nervermore/p/5023590.html
總結
以上是生活随笔為你收集整理的scala类型推断及库方法设计原则和==与java有何差别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件管理(NSfilemanager)
- 下一篇: 第十三周学习报告