91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala函數文本的短格式和占位符語法的用法

發布時間:2021-07-15 09:42:29 來源:億速云 閱讀:184 作者:chen 欄目:編程語言

這篇文章主要講解了“Scala函數文本的短格式和占位符語法的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Scala函數文本的短格式和占位符語法的用法”吧!

函數文本的短格式

Scala提供了許多方法去除冗余信息并把函數文本寫得更簡短。注意留意這些機會,因為它們能讓你去掉代碼里亂七八糟的東西。

一種讓函數文本更簡短的方式是去除參數類型。因此,前面帶過濾器的例子可以寫成這樣:

scala> someNumbers.filter((x) => x > 0)  res7: List[Int] = List(5, 10)

Scala編譯器知道x一定是整數,因為它看到你立刻使用了這個函數過濾整數列表(由someNumbers暗示)。這被稱為目標類型化:target typing,因為表達式的目標使用——本例中someNumbers.filter()的參數——影響了表達式的類型化——本例中決定了x參數的類型。目標類型化的精確細節并不重要。你可以簡單地從編寫一個不帶參數類型的函數文本開始,并且,如果編譯器不能識別,再加上類型。幾次之后你就對什么情況編譯器能或不能解開謎題有感覺了。

第二種去除無用字符的方式是省略類型是被推斷的參數之外的括號。前面例子里,x兩邊的括號不是必須的:

scala> someNumbers.filter(x => x > 0)  res8: List[Int] = List(5, 10)

占位符語法

如果想讓函數文本更簡潔,可以把下劃線當做一個或更多參數的占位符,只要每個參數在函數文本內僅出現一次。比如,_ > 0對于檢查值是否大于零的函數來說就是非常短的標注:

scala> someNumbers.filter(_ > 0)  res9: List[Int] = List(5, 10)

你可以把下劃線看作表達式里需要被“填入”的“空白”。這個空白在每次函數被調用的時候用函數的參數填入。例如,由于someNumbers在第113頁被初始化為值List(-11, -10, -5, 0, 5, 10),filter方法會把_ > 0里的空格首先用-11替換,就如-11 > 0,然后用-10替換,如-10 > 0,然后用-5,如-5 > 0,這樣直到List的***一個值。因此,函數文本_ > 0與稍微冗長一點兒的x => x > 0相同,演示如下:

scala> someNumbers.filter(x => x > 0)  res10: List[Int] = List(5, 10)

有時你把下劃線當作參數的占位符時,編譯器有可能沒有足夠的信息推斷缺失的參數類型。例如,假設你只是寫_ + _:

scala> val f = _ + _  < console>:4: error: missing parameter type for expanded  function ((x$1, x$2) => x$1.$plus(x$2))   val f = _ + _   ?

這種情況下,你可以使用冒號指定類型,如下:

scala> val f = (_: Int) + (_: Int)  f: (Int, Int) => Int = < function>  scala> f(5, 10)  res11: Int = 15

請注意_ + _將擴展成帶兩個參數的函數文本。這也是僅當每個參數在函數文本中最多出現一次的情況下你才能使用這種短格式的原因。多個下劃線指代多個參數,而不是單個參數的重復使用。***個下劃線代表***個參數,第二個下劃線代表第二個,第三個……,如此類推。

感謝各位的閱讀,以上就是“Scala函數文本的短格式和占位符語法的用法”的內容了,經過本文的學習后,相信大家對Scala函數文本的短格式和占位符語法的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮南市| 资兴市| 衢州市| 台山市| 南丹县| 大石桥市| 柳州市| 西安市| 柞水县| 府谷县| 吐鲁番市| 衡东县| 大足县| 兴城市| 犍为县| 柏乡县| 思南县| 甘南县| 伊川县| 盖州市| 阿克陶县| 宜黄县| 方城县| 巴楚县| 吉木乃县| 隆林| 沧州市| 大城县| 汾阳市| 乐安县| 龙井市| 宣汉县| 韶关市| 泰安市| 北票市| 太原市| 康定县| 五大连池市| 辽阳市| 福泉市| 交城县|