国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Scala的數(shù)學(xué)運(yùn)算、關(guān)系和邏輯操作及位操作符

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

數(shù)學(xué)運(yùn)算

你可以通過(guò)中綴操作符,加號(hào)(+),減號(hào)(-),乘號(hào)(*),除號(hào)(/)和余數(shù)(%),在任何數(shù)類型上調(diào)用數(shù)學(xué)方法。以下是一些例子:

51CTO編輯推薦:Scala編程語(yǔ)言專題

  1. scala> 1.2 + 2.3 
  2. res6: Double = 3.5 
  3. scala> 3 - 1 
  4. res7: Int = 2 
  5. scala> 'b' - 'a' 
  6. res8: Int = 1 
  7. scala> 2L * 3L  
  8. res9: Long = 6 
  9. scala> 11 / 4 
  10. res10: Int = 2 
  11. scala> 11 % 4 
  12. res11: Int = 3 
  13. scala> 11.0f / 4.0f  
  14. res12: Float = 2.75 
  15. scala> 11.0 % 4.0 
  16. res13: Double = 3.0 
當(dāng)左右兩個(gè)操作數(shù)都是整數(shù)類型時(shí)(Int,Long,Byte,Short,或Char),/操作符將返回給你商的整數(shù)部分,去掉余數(shù)部分。%操作符指明它的余數(shù)。

用%符號(hào)得到的浮點(diǎn)數(shù)余數(shù)部分并不遵循IEEE754標(biāo)準(zhǔn)的定義。IEEE754在計(jì)算余數(shù)時(shí)使用四舍五入除法,而不是截尾除法,因此余數(shù)的計(jì)算與整數(shù)的余數(shù)操作會(huì)有很大的不同。如果你的確想要IEEE754的余數(shù),可以調(diào)用scala.Math里的IEEEremainder,例如:

  1. scala> Math.IEEEremainder(11.04.0)  
  2. res14: Double = -1.0 
數(shù)類型還提供了一元前綴+和-操作符(方法unary_+和unary_-),允許你指示文本數(shù)是正的還是負(fù)的,如-3或+4.0。如果你沒(méi)有指定一元的+或-,文本數(shù)被解釋為正的。一元符號(hào)+也存在只是為了與一元符號(hào)-相協(xié)調(diào),不過(guò)沒(méi)有任何效果。一元符號(hào)-還可以用來(lái)使變量變成負(fù)值。舉例如下:

  1. scala> val neg = 1 + -3 
  2. neg: Int = -2 
  3. scala> val y = +3 
  4. y: Int = 3 
  5. scala> -neg  
  6. res15: Int = 2 
關(guān)系和邏輯操作

你可以用關(guān)系方法:大于(>),小于(< ),大于等于(>=)和小于等于(< =)比較數(shù)類型,像等號(hào)操作符那樣,產(chǎn)生一個(gè)Boolean結(jié)果。另外,你可以使用一元操作符!(unary_!方法)改變Boolean值。以下是一些例子:

  1. scala> 1 > 2 
  2. res16: Boolean = false 
  3. scala> 1 <  2 
  4. res17: Boolean = true 
  5. scala> 1.0 < = 1.0 
  6. res18: Boolean = true 
  7. scala> 3.5f >= 3.6f  
  8. res19: Boolean = false 
  9. scala> 'a' >= 'A' 
  10. res20: Boolean = true 
  11. scala> val thisIsBoring = !true 
  12. thisIsBoring: Boolean = false 
  13. scala> !thisIsBoring  
  14. res21: Boolean = true 
邏輯方法,邏輯與(&&)和邏輯或(||),以中綴方式帶Boolean操作數(shù)并產(chǎn)生Boolean結(jié)果。如:

  1. scala> val toBe = true 
  2. toBe: Boolean = true 
  3. scala> val question = toBe || !toBe  
  4. question: Boolean = true 
  5. scala> val paradox = toBe && !toBe  
  6. paradox: Boolean = false 
與Java里一樣,邏輯與和邏輯或有短路:short-circuit的概念:用這些操作符建造的表達(dá)式僅評(píng)估最少能決定結(jié)果的部分。換句話說(shuō),邏輯與和邏輯或表達(dá)式的右手側(cè)部分在左手側(cè)部分能決定結(jié)果時(shí)就不再被評(píng)估了。舉個(gè)例子,如果邏輯與表達(dá)式的左手側(cè)計(jì)算結(jié)果為false,那么表達(dá)式的結(jié)果將注定是false,因此右手側(cè)部分不再做評(píng)估。與之類似,如果邏輯或表達(dá)式的左手側(cè)部分計(jì)算結(jié)果為true,那么表達(dá)式的結(jié)果將必然是true,于是右手側(cè)部分不再被計(jì)算。下面是一些例子:

  1. scala> def salt() = { println("salt"); false }  
  2. salt: ()Boolean  
  3. scala> def pepper() = { println("pepper"); true }  
  4. pepper: ()Boolean  
  5. scala> pepper() && salt()  
  6. pepper  
  7. salt  
  8. res22: Boolean = false 
  9. scala> salt() && pepper()  
  10. salt  
  11. res23: Boolean = false 
***個(gè)表達(dá)式中,pepper和salt都被調(diào)用,但第二個(gè)里,只有salt被調(diào)用。因?yàn)閟alt返回false,所以就沒(méi)必要調(diào)用pepper了。

注意

或許你會(huì)想知道如果操作符都只是方法的話短路機(jī)制是怎么工作的呢。通常,進(jìn)入方法之前所有的參數(shù)都會(huì)被評(píng)估,因此方法怎么可能選擇不評(píng)估他的第二個(gè)參數(shù)呢?答案是因?yàn)樗械腟cala方法都有延遲其參數(shù)評(píng)估乃至取消評(píng)估的設(shè)置。

位操作符

Scala讓你能夠使用若干位方法對(duì)整數(shù)類型的單個(gè)位執(zhí)行操作。有:按位與運(yùn)算(&),按位或運(yùn)算(|)和按位異或運(yùn)算(^)。按位異或方法對(duì)它的操作數(shù)執(zhí)行互斥或:exclusive or操作。一致的位產(chǎn)生0。差異的位產(chǎn)生1。因此0011 ^ 0101產(chǎn)生0110。一元按位取補(bǔ)操作符(~,方法unary_~),反轉(zhuǎn)它的操作數(shù)的每一位。例如:

  1. scala> 1 & 2 
  2. res24: Int = 0 
  3. scala> 1 | 2 
  4. res25: Int = 3 
  5. scala> 1 ˆ 3 
  6. res26: Int = 2 
  7. scala> ~1 
  8. res27: Int = -2 
***個(gè)表達(dá)式,1 & 2,與運(yùn)算了1(0001)和2(0010)的每一個(gè)位,并產(chǎn)生了0(0000)。第二個(gè)表達(dá)式,1 | 2,對(duì)同樣的操作數(shù)的每一個(gè)位執(zhí)行或運(yùn)算,并產(chǎn)生3(0011)。第三個(gè)表達(dá)式,1 ^ 3,異或1(0001)和3(0011)的每一個(gè)位,產(chǎn)生2(0010)。***的表達(dá)式,~1,轉(zhuǎn)換了1(0001)的每一個(gè)位,產(chǎn)生了-2,二進(jìn)制看起來(lái)是1111 1111 1111 1111 1111 1111 1111 1111 1111 1110。

Scala整數(shù)類型還提供了三個(gè)位移方法:左移(< < ),右移(>>)和無(wú)符號(hào)右移(>>>)。使用在中綴操作符方式時(shí),位移方法會(huì)按照右側(cè)指定的整數(shù)值次數(shù)逐位移動(dòng)左側(cè)的整數(shù)。左移和無(wú)符號(hào)右移在移動(dòng)的時(shí)候填入零。右移則在移動(dòng)時(shí)填入左側(cè)整數(shù)的***位(符號(hào)位)。舉例如下:

  1. scala> -1 >> 31 
  2. res38: Int = -1 
  3. scala> -1 >>> 31 
  4. res39: Int = 1 
  5. scala> 1 < <  2 
  6. res40: Int = 4 

二進(jìn)制的-1是1111 1111 1111 1111 1111 1111 1111 1111。***個(gè)例子里,-1 >> 31,-1被右移了31個(gè)位。由于Int包括32位,這個(gè)操作實(shí)際就是把最左側(cè)的一位移到了最右側(cè)。數(shù)字類型的最左側(cè)位是符號(hào)位。如果最左側(cè)位是1,數(shù)字就是負(fù)的,如果是0,數(shù)字就是正的。由于>>方法在不斷右移的時(shí)候填入的是1,-1最左側(cè)的一位是1,導(dǎo)致結(jié)果與原來(lái)左側(cè)的數(shù)字一模一樣,32位個(gè)1,或者說(shuō)是-1。第二個(gè)例子里,-1 >>> 31,最左側(cè)的位再一次不斷向右移直至最右側(cè)的位置,但是這次填入的是0。因此這次的結(jié)果是二進(jìn)制的0000 0000 0000 0000 0000 0000 0000 0001,或者說(shuō)是1。***一個(gè)例子里,1 < <  2,左操作數(shù),1,被向左移動(dòng)2個(gè)位置(填入0),產(chǎn)生結(jié)果是二進(jìn)制的0000 0000 0000 0000 0000 0000 0000 0100,或者說(shuō)是4。

【相關(guān)閱讀】

  1. Scala的操作符:任何方法都可以是操作符
  2. Scala的基本類型及文本化
  3. Scala程序及其Application特質(zhì)
  4. Scala程序中的分號(hào)推斷和Singleton對(duì)象
  5. 學(xué)習(xí)Scala類的定義,字段和方法

責(zé)任編輯:book05 來(lái)源: Artima
相關(guān)推薦

2009-07-21 12:47:04

Scala私有字段定義操作符

2009-07-21 09:31:00

Scala操作符

2009-12-11 10:43:00

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

2009-07-21 08:41:05

Scala操作符優(yōu)先級(jí)

2010-07-14 14:55:07

Perl操作符

2025-02-24 11:16:20

2019-12-18 09:45:24

BashshellLinux

2021-10-31 18:59:55

Python操作符用法

2009-08-19 17:26:28

C# 操作符

2023-10-12 09:58:45

操作符C++

2011-04-12 15:03:26

C語(yǔ)言編程位操作

2009-08-19 17:38:17

C# 操作符分類

2010-01-28 11:16:28

C++操作符

2010-07-13 11:11:39

Perl標(biāo)量

2009-11-30 16:48:08

PHP操作符

2009-07-14 18:34:22

Jython操作符重載

2011-04-08 16:26:14

JavaScript

2010-07-14 14:30:31

Perl操作符

2010-07-19 11:00:24

Perl操作符

2009-08-19 17:33:35

C# 操作符
點(diǎn)贊
收藏

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

久久久在线视频| 日本高清好狼色视频| 国产成人精品一区二区三区福利| 黄视频网站在线| 中文在线最新版地址| 中文精品在线| 7m精品福利视频导航| 欧美韩日亚洲| 欧美综合天天夜夜久久| 亚洲精品自拍网| 国产成人h网站| 99精彩视频在线观看免费| 日韩久久99| 亚洲在线观看免费| 国产精品国产三级国产aⅴ浪潮 | 国产精品高潮在线| 激情伊人五月天| 无遮挡的视频在线观看| 欧美xxxx中国| 国产亚洲精品久久久久动| 欧美一级特黄aaaaaa在线看片| 东北少妇不带套对白| 欧美成人高清视频在线观看| 日韩午夜中文字幕| 色综合色综合网色综合| 亚洲成人影院少妇| 日韩欧美在线国产| av免费观看一区二区| 亚洲男帅同性gay1069| av免费观看大全| 盗摄精品av一区二区三区| 国产树林野战在线播放| 狠狠干 狠狠操| 另类小说综合网| 手机看片日韩国产| 成人在线免费电影网站| 91中文在线视频| 日本一不卡视频| jizz在亚洲| 91麻豆精品国产91久久久久久久久 | 日本韩国欧美在线观看| 日韩精品午夜| 日韩中文字幕在线看| 99久久夜色精品国产亚洲96 | 性色视频在线观看| 美女少妇全过程你懂的久久 | 91蜜桃视频在线| 日韩精品免费在线观看| 日韩加勒比系列| 精品国产乱码久久久久久天美 | 欧美激情videos| 欧美交a欧美精品喷水| 国产精品久久久久久久久免费看 | 在线免费黄色毛片| 欧美日韩高清一区二区| 岛国在线大片| 欧美日韩1234| 草草在线观看| 久久成人人人人精品欧| 国产在线中文字幕| 日韩欧美在线网站| av一区在线| 欧美色网站导航| 91精品久久| 日韩有码视频在线| 欧美freesex8一10精品| 国产精品久久久久久久久久东京| 日韩国产一区二区三区| 亚洲永久一区二区三区在线| 日韩成人一级片| 国产一二区视频| 五月开心婷婷久久| 婷婷激情久久| 欧美性猛交久久久乱大交小说| 欧美v日韩v国产v| 精品999网站| 国产视频三级在线观看播放| 国产视色精品亚洲一区二区| 欧美日韩国产乱码电影| 亚洲欧美色图| 在线观看av黄网站永久| 99高清视频有精品视频| 亚洲国产视频a| 成久久久网站| 黄色污污视频在线观看| 国产免费一区二区三区| 欧美日韩国产小视频在线观看| 韩日成人在线| 在线视频你懂| 91亚洲国产精品| 亚洲欧美激情一区二区| 精品国产一区二区三区久久久蜜臀| 琪琪五月天综合婷婷| 日本在线观看天堂男亚洲| 久久精品夜夜夜夜久久| 成人免费在线播放| av丝袜在线| 污污污污污污www网站免费| 久久九九热免费视频| 91在线高清观看| 欧美日韩一区二区三区四区不卡 | 秋霞午夜一区二区三区视频| 在线观看亚洲视频啊啊啊啊| 色婷婷精品大在线视频| 精品视频网站| 可以看美女隐私的网站| 精品国产欧美成人夜夜嗨| 国产日本精品| 欧美韩日亚洲| 精品久久久久久久久久中文字幕| 欧美在线一级va免费观看| 制服丝袜亚洲播放| 亚洲男帅同性gay1069| 国产乱码精品一区二区三区av| 亚洲三区视频| 欧美成人一级视频| 国产一区二区三区视频在线| 97久久人人超碰caoprom欧美| 成人午夜激情影院| 国产一区精品| 午夜精品电影在线观看| 亚洲精品欧美日韩专区| 欧美激情视频一区二区三区不卡| 久久久久久久久国产精品| 国产亚洲一区二区精品| 日韩av网站大全| 色综合五月天导航| 欧美成人午夜免费视在线看片| 美女撒尿一区二区三区| 久久九九国产精品怡红院| 色婷婷久久一区二区| 午夜激情一区二区三区| 亚洲最大的成人av| 欧美性20hd另类| 美国三级日本三级久久99| 欧美亚洲色图校园春色| 91丝袜在线| 高清欧美精品xxxxx在线看| 日韩精彩视频| 成人国产亚洲精品a区天堂华泰 | 午夜免费日韩视频| 亚洲欧洲日韩一区二区三区| 免费观看在线色综合| 伊人www22综合色| 猛男欧美办公室激情在线| 蜜桃久久影院| 久久97久久97精品免视看| 国产亚洲va综合人人澡精品 | 日产日韩在线亚洲欧美| 91精品国产高清久久久久久91裸体| 超碰在线cao| 久久免费精品日本久久中文字幕| 成人av第一页| 欧美激情性爽国产精品17p| 日韩a在线观看| 亚洲精品在线视频观看| 欧美精品一区在线发布| 国模精品一区二区三区| 精品一区日韩成人| 亚洲视频中文字幕| 日本女优在线视频一区二区| 国产精品自在欧美一区| 国产在线视视频有精品| 韩国精品一区二区| 丁香婷婷综合激情五月色| 日本不卡一区二区三区高清视频| 国产乱码精品一品二品| 99久久精品费精品国产一区二区| 2017欧美狠狠色| 亚洲国产高清aⅴ视频| 国产精品久久久久久久久晋中 | 视频一区中文字幕| 精品一区二区三区中文字幕视频| 黄网页在线观看| 色偷偷亚洲第一成人综合网址| 欧美亚洲爱爱另类综合| 欧美成人激情图片网| 清纯唯美日韩制服另类| 国产亚洲欧美一区二区三区| 亚洲精品www久久久| 麻豆国产精品va在线观看不卡 | 你懂的亚洲视频| av免费在线一区二区三区| 中文字幕毛片| 久久久久亚洲av无码专区喷水| 欧美片一区二区三区| 亚洲午夜精品在线| 成人动漫视频在线| 国产精品香蕉一区二区三区| 久久精品导航| 亚洲视频中文字幕| 日韩精品专区在线影院观看| 国产不卡一区二区在线播放| 蜜桃传媒一区二区三区| 91国模大尺度私拍在线视频| 欧美撒尿777hd撒尿| 久久久免费av| 一本一生久久a久久精品综合蜜| 男男电影完整版在线观看| 国产精品久久久久久久久久久久久久久 |