成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala對象的相等性比較

開發(fā) 后端
本文節(jié)選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第五章。Scala是一種針對 JVM 將函數(shù)和面向?qū)ο蠹夹g(shù)組合在一起的編程語言。

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

  1. scala> 1 == 2 
  2. res24: Boolean = false 
  3. scala> 1 != 2 
  4. res25: Boolean = true 
  5. scala> 2 == 2 
  6. res26: Boolean = true 
這些操作對所有對象都起作用,而不僅僅是基本類型。例如,你可以用他比較列表:

  1. scala> List(123) == List(123)  
  2. res27: Boolean = true 
  3. scala> List(123) == List(456)  
  4. res28: Boolean = false 
進(jìn)一步,你還可以比較不同類型的兩個對象:

  1. scala> 1 == 1.0 
  2. res29: Boolean = true 
  3. scala> List(123) == "hello" 
  4. res30: Boolean = false 
你甚至可以比較null,或任何可能是null的東西。不會有任何異常被拋出:

  1. scala> List(123) == null 
  2. res31: Boolean = false 
  3. scala> null == List(123)  
  4. 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)容編寫的。例如,以下是恰好都有五個同樣字母的兩個字串的比較:

  1. scala> ("he" + "llo") == "hello" 
  2. res33: Boolean = true 
Scala的==與Java的有何差別

Java里的既可以比較原始類型也可以比較參考類型。對于原始類型,Java的==比較值的相等性,如Scala。然而對于參考類型,Java的==比較了參考相等性:reference equality,也就是說這兩個變量是否都指向于JVM堆里的同一個對象。Scala也提供了這種機(jī)制,名字是eq。不過,eq和它的反義詞,ne,僅僅應(yīng)用于可以直接映射到Java的對象。

【相關(guān)閱讀】

  1. Scala的數(shù)學(xué)運(yùn)算、關(guān)系和邏輯操作及位操作符
  2. Scala的操作符:任何方法都可以是操作符
  3. Scala的基本類型及文本化
  4. Scala程序及其Application特質(zhì)
  5. Scala程序中的分號推斷和Singleton對象
責(zé)任編輯:book05 來源: Artima
相關(guān)推薦

2011-12-16 14:34:22

Java

2011-06-28 09:51:08

.NET對象相等

2009-07-21 12:18:37

ScalaRational對象toString

2012-12-03 10:26:51

Scala

2009-07-22 09:22:20

Scala工廠對象

2020-12-29 06:44:18

GoScala編程語言

2009-09-09 11:14:16

Scala對象

2010-03-11 10:34:22

Scala

2009-06-22 14:26:12

ScalaXML對象

2011-06-28 11:06:16

Scala

2010-11-17 11:31:22

Scala基礎(chǔ)面向?qū)ο?/a>Scala

2011-06-28 11:05:19

Qt QWidget Eventable

2009-12-11 10:43:00

Scala講座操作符函數(shù)

2009-06-16 17:09:17

Scala面向?qū)ο?/a>函數(shù)編程

2011-03-18 19:37:38

Eventable接口QtWidget

2009-07-20 18:03:26

Scala程序Singleton對象

2009-07-08 12:43:59

Scala ServlScala語言

2009-09-27 15:29:00

Scala講座面向?qū)ο?/a>Scala

2009-07-08 16:10:24

Scala簡介面向?qū)ο?/a>函數(shù)式

2020-10-31 17:33:18

Scala語言函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 在线视频国产一区 | 日韩中文字幕一区二区 | 一级毛片色一级 | 亚洲女人天堂成人av在线 | 日韩视频中文字幕 | 99国产精品久久久久 | 欧美精品一区在线发布 | 一区二区三区视频在线观看 | 亚洲国产成人av | 国色天香成人网 | 久久久国产一区二区三区四区小说 | 毛片网在线观看 | 天天玩天天干天天操 | 欧美日韩电影免费观看 | 蜜桃一区二区三区 | 一区二区亚洲 | 国产在线1 | 日韩精品激情 | 精品成人佐山爱一区二区 | 色香婷婷| 男女午夜免费视频 | 中文字幕高清免费日韩视频在线 | 精品国产一区二区在线 | 欧美一级精品片在线看 | 精品一区二区三区在线观看 | 久久神马| 亚洲 中文 欧美 日韩 在线观看 | 免费在线一区二区 | 久久国产精品视频 | www.中文字幕av | 一区视频 | 日韩高清中文字幕 | 亚洲免费观看视频 | 中文字幕免费中文 | 中文字幕亚洲免费 | 超碰在线免费av | 美女在线视频一区二区三区 | 99re66在线观看精品热 | 国产欧美日韩精品一区 | 国产精品久久久久久久久久久免费看 | 欧美激情精品久久久久久 |