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

Scala操作符的優(yōu)先級和關聯(lián)性

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

操作符的優(yōu)先級決定了表達式的哪個部分先于其他部分被評估。舉例來說,表達式2 + 2 * 7計算得16,而不是28,因為*操作符比+操作符有更高的優(yōu)先級。因此表達式的乘法部分先于加法部分被評估。當然你還可以在表達式里使用括號來厘清評估次序或覆蓋優(yōu)先級。例如,如果你實際上希望上面表達式的值是28,你可以這么寫表達式:

51CTO編輯推薦:Scala編程語言專題

  1. (2 + 2) * 7 

由于Scala沒有操作符,實際上,是以操作符的格式使用方法的一個途徑,你或許想知道操作符優(yōu)先級是怎么做到的。Scala基于操作符格式里方法的第一個字符決定優(yōu)先級(這個規(guī)則有一個例外,稍后再說)。比方說,如果方法名開始于*,那么就比開始于+的方法有更高的優(yōu)先級。因此2 + 2 * 7將被評估為2 + (2 * 7),而a +++ b *** c(這里a,b和c是值或變量,而+++和***是方法)將被看作是a +++ (b *** c),因為***方法比+++方法有更高的優(yōu)先級。

表格 5.3 操作符優(yōu)先級

操作符優(yōu)先級 

表格5.3以降序方式展示了根據(jù)方法第一個字符指定的優(yōu)先級,同一行的字符具有同樣的優(yōu)先級。表格中字符的位置越高,以這個字符開始的方法具有的優(yōu)先級就越高。舉例如下:

  1. scala> 2 << 2 + 2 
  2. res41: Int = 32 
<<方法開始于字符<,在表格5.3里的位置比+(+方法的第一個也是唯一的一個字符)要低。因此<<比+的優(yōu)先級低,表達式也要在先調(diào)用了+方法之后再調(diào)用<<方法,如2 << (2 + 2)。我們可以算一下,2 + 2得4,2 << 4得32。下面給出另一個例子:

  1. scala> 2 + 2 << 2 
  2. res42: Int = 16 
由于第一個字符與前面的例子里一樣,因此調(diào)用的方法順序也沒有不同。首先+方法被調(diào)用,然后是<<方法。因此2 + 2得4,4 << 2得16。

上面提到的優(yōu)先級規(guī)則的一個例外,有關于以等號結(jié)束的賦值操作符:assignment operator。如果操作符以等號字符(=)結(jié)束,且操作符并非比較操作符<=,>=,==,或=,那么這個操作符的優(yōu)先級與賦值符(=)相同。也就是說,它比任何其他操作符的優(yōu)先級都低。例如:

  1. x *= y + 1 
與下面的相同:

  1. x *= (y + 1)  
因為*=被當作賦值操作符,它的優(yōu)先級低于+,盡管操作符的第一個字符是*,似乎其優(yōu)先級高于+。

當同樣優(yōu)先級的多個操作符肩并肩地出現(xiàn)在表達式里,操作符的關聯(lián)性:associativity決定了操作符分組的方式。Scala里操作符的關聯(lián)性取決于它的最后一個字符。正如第3章里47頁提到的,任何以‘:’字符結(jié)尾的方法由它的右手側(cè)操作數(shù)調(diào)用,并傳入左操作數(shù)。以其他字符結(jié)尾的方法有其他的說法。它們都是被左操作數(shù)調(diào)用,并傳入右操作數(shù)。因此a * b變成a.*(b),但是a:::b變成b.:::(a)。然而,不論操作符具有什么樣的關聯(lián)性,它的操作數(shù)總是從左到右評估的。因此如果b是一個表達式而不僅僅是一個不可變值的指針的話,那么更精確的意義上說,a:::b將會當作是:

  1. { val x = a; b.:::(x) } 

這個代碼塊中,a仍然在b之前被評估,然后評估結(jié)果被當作操作數(shù)傳給b的:::方法。

這種關聯(lián)性規(guī)則在同時使用多個具有同優(yōu)先級的操作符時也會起作用。如果方法結(jié)束于:,它們就被自右向左分組;反過來,就是自左向右分組。例如,a ::: b ::: c會被當作a ::: (b ::: c)。而a * b * c被當作(a * b) * c。

操作符優(yōu)先級也是Scala語言的一部分。你不用怕它。但無論如何,使用括號去厘清什么操作符作用在哪個表達式上都是好的風格。或許你唯一可以確信其他人不用查書就知道的優(yōu)先級關系就是乘除法操作符(*,/和%),比加減法(+和-)的要高。因此即使a + b << c不用括號也能產(chǎn)生你想要的結(jié)果,寫成(a + b) << c而得到的簡潔性也可能會減少你的同事為了表示不滿在操作符注釋里寫你名字的頻率,“bills!*&^%~code!” 到目前為止,你應該能指出給出的這段代碼,Scala編譯器會調(diào)用成(bills.!*&^%~(code)).!()。

【相關閱讀】

  1. Scala對象的相等性比較
  2. Scala的數(shù)學運算、關系和邏輯操作及位操作符
  3. Scala的操作符:任何方法都可以是操作符
  4. Scala的基本類型及文本化
  5. Scala程序及其Application特質(zhì)

責任編輯:book05 來源: Artima
相關推薦

2009-07-21 12:47:04

Scala私有字段定義操作符

2013-05-28 13:44:01

Java下一代

2009-07-21 09:31:00

Scala操作符

2018-01-05 16:07:49

VM-VMVM-host規(guī)則

2009-07-21 09:31:00

Scala數(shù)學運算邏輯操作位操作符

2015-08-18 14:47:10

大數(shù)據(jù)

2009-08-12 13:07:13

C#運算符優(yōu)先級

2009-12-11 10:43:00

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

2010-07-14 14:55:07

Perl操作符

2011-03-14 10:17:40

JavaScript

2010-09-06 14:53:27

CSS優(yōu)先級

2012-08-14 09:38:29

WAN優(yōu)化

2010-09-01 14:10:36

CSS優(yōu)先級

2022-12-23 09:41:14

優(yōu)先級反轉(zhuǎn)

2021-10-31 18:59:55

Python操作符用法

2009-08-19 17:26:28

C# 操作符

2021-04-06 10:45:18

React前端優(yōu)先級

2020-09-30 09:07:37

DevOps

2010-03-18 14:09:20

Java線程同步

2010-07-13 11:11:39

Perl標量
點贊
收藏

51CTO技術棧公眾號

欧美日韩亚洲在线| 一区二区三区欧洲区| 亚洲电影一区二区三区| 国产一级性片| 亚洲国产wwwccc36天堂| 免费成人av电影| 日韩欧美一级二级三级| 朝桐光一区二区| 久久久久久91香蕉国产| 色天天综合网| 国产视频一区二区不卡| 国产乱子伦一区二区三区国色天香| 精品人妻大屁股白浆无码| 久久综合久久久久88| 妞干网在线视频| 欧美亚洲综合网| 2022成人影院| 奇米影视亚洲狠狠色| 亚洲欧美久久久| aa视频在线播放| 亚洲无线码一区二区三区| 嫩草在线视频| 久久精品国产2020观看福利| 日韩欧美高清| 免费看污污视频| 亚洲男人的天堂一区二区| 日韩av中文| 九九久久综合网站| 影音国产精品| 青青在线免费视频| 亚洲综合成人网| 草草在线视频| 国产97免费视| 极品美女销魂一区二区三区免费| 四虎免费av| 亚洲高清免费观看高清完整版| 91精品啪在线观看国产爱臀| 国产青春久久久国产毛片| 久久先锋资源网| 欧美激情免费| 欧美激情va永久在线播放| 欧美va天堂在线| 久久视频这里有精品| 精品久久久久久久久久久久久| 综合日韩av| 99久热re在线精品视频| 国产午夜一区二区三区| av文字幕在线观看| 国产成人久久久| 成人在线综合网| 日本中文在线| 日韩免费在线看| 国产宾馆实践打屁股91| av大片在线观看| 68精品国产免费久久久久久婷婷 | 97伦理在线四区| 91论坛在线播放| 亚洲卡一卡二| 成人国产亚洲精品a区天堂华泰| 成人精品小蝌蚪| 色呦呦呦在线观看| 91久久偷偷做嫩草影院| 国产精品免费久久久久| 国产高清不卡| 欧美成人在线免费观看| 亚洲成人一区二区在线观看| 久久久久亚洲精品中文字幕| 亚洲午夜高清视频| 欧美日韩黄色影视| 91久久国产| 韩国av电影免费观看| 中文字幕欧美国内| 日韩黄色片在线观看| 男女网站在线观看| 国产精品丝袜视频| 综合婷婷亚洲小说| 2020国产精品极品色在线观看| 男女激情免费视频| 亚洲欧美第一页| 精品一区二区三区日韩| 色网在线观看| 欧美大陆一区二区| 91精品国产综合久久久久久漫画 | 婷婷激情成人| 香蕉视频免费版| 欧美一区二区三区免费在线看| 日本一区二区高清不卡| 3344永久| 欧美一区二区三区免费视| 国产亚洲精品7777| 日本一区二区乱| 天天摸天天碰天天添| 中文字幕亚洲一区二区三区| 国产麻豆成人传媒免费观看| 韩国主播福利视频一区二区三区| 国产精品av免费| 日韩成人在线观看| 国产真实乱对白精彩久久| 亚洲女同志freevdieo| 色哺乳xxxxhd奶水米仓惠香| 亚洲欧美日韩久久久久久| 国产成人一区在线| 日韩成人在线电影| 成年人免费大片| 国产综合在线看| 一区二区久久久久久| 日韩片欧美片| 大地资源中文在线观看免费版| 国产女主播一区二区三区| 制服丝袜亚洲播放| 久久99精品视频| 国产成人免费| 五月婷婷六月合| 国产精品一区=区| 欧美区一区二区三区| 日韩中文字幕亚洲一区二区va在线| av日韩国产| 亚洲欧洲日产国码无码久久99| 欧美大秀在线观看| 亚洲精品国产一区二区精华液| 婷婷久久国产对白刺激五月99| 欧美被日视频| 中文字幕超清在线免费观看| 色婷婷av一区二区三区在线观看| 久久久久国产一区二区三区四区| 网友自拍一区| aaa在线观看| 99热这里只有精品免费| 国内成人精品一区| 欧洲一区在线观看| 国产在线播放一区| 国产美女撒尿一区二区| 你懂的在线视频| 女女同性女同一区二区三区按摩| 欧美日韩不卡合集视频| 高跟丝袜一区二区三区| 热久久久久久久| 成人激情久久| 美丽的姑娘在线观看免费动漫| 亚洲欧美日韩精品综合在线观看| 日韩中文在线视频| 疯狂做受xxxx高潮欧美日本| 国模少妇一区二区三区| 日韩有码一区| 欧美hdxxx| va中文字幕| 日韩av电影免费观看| 欧美xxxx做受欧美.88| 狠狠躁夜夜躁人人爽天天天天97| 欧美a级一区二区| 奇米影视777在线欧美电影观看| av基地在线| 青青青在线播放| 久久99国产精品99久久| 欧美理论电影在线播放| 欧美午夜理伦三级在线观看| 99视频精品免费视频| 雨宫琴音一区二区三区| 99亚洲伊人久久精品影院| 污网站在线看| 免费国产黄色网址| 成人av资源网| 欧美成人精品在线观看| 欧美调教femdomvk| 国产免费久久精品| 日本午夜精品一区二区三区电影| 综合国产视频| 亚洲第一会所| 69视频在线观看| **孕交吃奶水一级毛片| 国产卡一卡二在线| 99porn视频在线| 久久久久一本一区二区青青蜜月| 日韩一级完整毛片| 亚洲午夜三级在线| 26uuu色噜噜精品一区二区| 日韩一级不卡| 日韩美女精品| 国产a亚洲精品| 在线欧美三级| 天堂在线观看一卡二卡三卡四卡| 91免费视频黄| 91精品久久久久久久久久另类 | 欧美性猛交xxxx黑人| 97国产精品videossex| 亚洲综合不卡| 欧美日韩在线二区| 欧美电影院免费观看| 蜜桃视频m3u8在线观看| 欧美成人免费| 午夜爽爽视频| 中文字幕第21页| 国产盗摄视频在线观看| 精品一区久久久| 国产激情久久久久| 精品中文字幕视频| 国产一区二区三区丝袜| 欧美精品一区二区在线播放| 欧美少妇一区二区| 天涯成人国产亚洲精品一区av|