本篇內(nèi)容介紹了“Scala對象的相等性舉例分析”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供阜新網(wǎng)站建設(shè)、阜新做網(wǎng)站、阜新網(wǎng)站設(shè)計(jì)、阜新網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、阜新企業(yè)網(wǎng)站模板建站服務(wù),十多年阜新做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
如果你想比較一下看看兩個Scala對象是否相等,可以使用或者==,或它的反義!=。下面舉幾個例子:
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
進(jìn)一步,你還可以比較不同類型的兩個對象:
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檢查,因此你不需要手動再檢查一次了。自動檢查機(jī)制不會檢查右手側(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也提供了這種機(jī)制,名字是eq。不過,eq和它的反義詞,ne,僅僅應(yīng)用于可以直接映射到Java的對象。
“Scala對象的相等性舉例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!