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