亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Scala的所有符號運算符是什么意思?

Scala的所有符號運算符是什么意思?

弒天下 2019-10-23 15:19:36
Scala語法有很多符號。由于使用搜索引擎很難找到這類名稱,因此將其完整列出會很有幫助。Scala中的所有符號都是什么,它們每個都做什么?我特別想知道->,||=,++=,<=,_._,::,和:+=。
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您可以根據某些條件先將它們分組。在本文中,我將僅說明下劃線字符和右箭頭。


_._包含句點。Scala中的句點始終表示方法調用。因此,在句號的左邊有接收方,在消息的右邊(方法名)?,F在_是Scala中的特殊符號。關于它有幾篇文章,例如此博客條目所有用例。在這里,這是一個匿名函數的捷徑,這是一個接受一個參數并_在其上調用方法的函數的快捷方式?,F在_不是有效的方法,因此很可能您已經看到_._1或類似的東西,即_._1在函數參數上調用方法。_1to _22是提取元組特定元素的元組方法。例:


val tup = ("Hallo", 33)

tup._1 // extracts "Hallo"

tup._2 // extracts 33

現在,假設函數應用程序快捷方式的用例。給定一個將整數映射到字符串的映射:


val coll = Map(1 -> "Eins", 2 -> "Zwei", 3 -> "Drei")

糟糕,標點符號已經再次出現。連字符和大于號字符(類似于右箭頭)是產生的運算符Tuple2。因此,無論編寫(1, "Eins")或的結果都沒有區別1 -> "Eins",只是后者更易于閱讀,尤其是在像地圖示例這樣的元組列表中。該->是什么神奇的,它是像其他一些運營商,可因為你把所有的隱式轉換的對象scala.Predef范圍。這里發生的轉換是


implicit def any2ArrowAssoc [A] (x: A): ArrowAssoc[A] 

哪里ArrowAssoc有->創建的方法Tuple2。因此1 -> "Eins"是實際的呼叫Predef.any2ArrowAssoc(1).->("Eins")。好。現在回到帶有下劃線字符的原始問題:


// lets create a sequence from the map by returning the

// values in reverse.

coll.map(_._2.reverse) // yields List(sniE, iewZ, ierD)

這里的下劃線縮短了以下等效代碼:


coll.map(tup => tup._2.reverse)

請注意,mapMap 的方法將鍵和值的元組傳遞給函數參數。因為我們只對值(字符串)感興趣,所以我們使用_2元組上的方法提取它們。


查看完整回答
反對 回復 2019-10-23
  • 3 回答
  • 0 關注
  • 745 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號