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

Scala對象的相等性比較

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

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

  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)一步,你還可以比較不同類型的兩個(gè)對象:

  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ì)地加工過,因此在許多情況下你都可以得到你想要的相等性的比較。這只是用了一個(gè)非常簡單的規(guī)則:首先檢查左側(cè)是否為null,如果不是,調(diào)用equals方法。由于equals是一個(gè)方法,因此比較的精度取決于左手邊的參數(shù)。又由于已經(jīng)有一個(gè)自動的null檢查,因此你不需要手動再檢查一次了。自動檢查機(jī)制不會檢查右手側(cè)的參數(shù),但是任何合理的equals方法都應(yīng)在參數(shù)為null的時(shí)候返回false。

這種類型的比較對于不同的對象也會產(chǎn)生true,只要他們的內(nèi)容是相同的并且它們的equals方法是基于內(nèi)容編寫的。例如,以下是恰好都有五個(gè)同樣字母的兩個(gè)字串的比較:

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

Java里的既可以比較原始類型也可以比較參考類型。對于原始類型,Java的==比較值的相等性,如Scala。然而對于參考類型,Java的==比較了參考相等性:reference equality,也就是說這兩個(gè)變量是否都指向于JVM堆里的同一個(gè)對象。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-11-17 11:31:22

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

2010-03-11 10:34:22

Scala

2009-06-22 14:26:12

ScalaXML對象

2011-06-28 11:06:16

Scala

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對象

2011-06-28 11:05:19

Qt QWidget Eventable

2009-12-11 10:43:00

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

2009-07-08 12:43:59

Scala ServlScala語言

2009-07-08 16:10:24

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

2009-09-27 15:29:00

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

2020-10-31 17:33:18

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

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

主站蜘蛛池模板: 高清视频一区二区三区 | 91视频大全| 久久国产精品免费一区二区三区 | 久久婷婷国产麻豆91 | 久久久久久久久久爱 | 91在线免费视频 | 日韩在线| 日韩在线观看一区二区三区 | 色视频网站在线观看 | 黄色片网站国产 | 亚洲免费在线观看av | 国产精品久久久久久久久久久免费看 | 日韩成人一区 | 天天操操 | 亚洲欧美在线观看视频 | 涩涩视频大全 | 福利av在线 | 欧美www在线 | 毛片1| 色婷婷综合久久久中文字幕 | 国产精品日韩高清伦字幕搜索 | 国产成人综合在线 | 久久国产精99精产国高潮 | 不卡一区二区三区四区 | 日本超碰| 久久久精品在线 | 欧美日韩在线一区二区 | 6080yy精品一区二区三区 | 亚洲国产精品久久人人爱 | 91精品国产高清一区二区三区 | 91免费看片 | 成人国产精品入口免费视频 | 久久精品国产免费看久久精品 | 亚洲免费视频一区 | 成人影音 | 日韩精品一区二区三区第95 | 亚洲国产aⅴ精品一区二区 免费观看av | 国产在线一区二 | 国产欧美在线一区二区 | 国产一区久久精品 | 欧美激情一区二区三区 |