新聞中心
如果你想比較一下看看兩個Scala對象是否相等,可以使用或者==,或它的反義!=。下面舉幾個例子:

10年積累的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有泗水免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
- scala> 1 == 2
- res24: Boolean = false
- scala> 1 != 2
- res25: Boolean = true
- scala> 2 == 2
- res26: Boolean = true
這些操作對所有對象都起作用,而不僅僅是基本類型。例如,你可以用他比較列表:
- scala> List(1, 2, 3) == List(1, 2, 3)
- res27: Boolean = true
- scala> List(1, 2, 3) == List(4, 5, 6)
- res28: Boolean = false
進一步,你還可以比較不同類型的兩個對象:
- scala> 1 == 1.0
- res29: Boolean = true
- scala> List(1, 2, 3) == "hello"
- res30: Boolean = false
你甚至可以比較null,或任何可能是null的東西。不會有任何異常被拋出:
- scala> List(1, 2, 3) == null
- res31: Boolean = false
- scala> null == List(1, 2, 3)
- res32: Boolean = false
如你所見,==已經(jīng)被仔細(xì)地加工過,因此在許多情況下你都可以得到你想要的相等性的比較。這只是用了一個非常簡單的規(guī)則:首先檢查左側(cè)是否為null,如果不是,調(diào)用equals方法。由于equals是一個方法,因此比較的精度取決于左手邊的參數(shù)。又由于已經(jīng)有一個自動的null檢查,因此你不需要手動再檢查一次了。自動檢查機制不會檢查右手側(cè)的參數(shù),但是任何合理的equals方法都應(yīng)在參數(shù)為null的時候返回false。
這種類型的比較對于不同的對象也會產(chǎn)生true,只要他們的內(nèi)容是相同的并且它們的equals方法是基于內(nèi)容編寫的。例如,以下是恰好都有五個同樣字母的兩個字串的比較:
- scala> ("he" + "llo") == "hello"
- res33: Boolean = true
Scala的==與Java的有何差別
Java里的既可以比較原始類型也可以比較參考類型。對于原始類型,Java的==比較值的相等性,如Scala。然而對于參考類型,Java的==比較了參考相等性:reference equality,也就是說這兩個變量是否都指向于JVM堆里的同一個對象。Scala也提供了這種機制,名字是eq。不過,eq和它的反義詞,ne,僅僅應(yīng)用于可以直接映射到Java的對象。
【相關(guān)閱讀】
- Scala的數(shù)學(xué)運算、關(guān)系和邏輯操作及位操作符
- Scala的操作符:任何方法都可以是操作符
- Scala的基本類型及文本化
- Scala程序及其Application特質(zhì)
- Scala程序中的分號推斷和Singleton對象
當(dāng)前名稱:Scala對象的相等性比較
文章轉(zhuǎn)載:http://www.fisionsoft.com.cn/article/cdspjdp.html


咨詢
建站咨詢
