在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ 函數(shù)–函數(shù)字面量的一些簡(jiǎn)化寫(xiě)法
包對(duì)象
Ordered Trait
組合和繼承–定義 final 成員
基本數(shù)據(jù)類型
Match 表達(dá)式
類和對(duì)象 (三)
操作基本數(shù)據(jù)類型
for 表達(dá)式
組合和繼承–重載成員函數(shù)和方法
類和對(duì)象 (二)
組合和繼承–定義 factory 對(duì)象
組合和繼承–多態(tài)和動(dòng)態(tài)綁定
Trait 的基本概念
if 表達(dá)式
組合和繼承–抽象類
函數(shù)–函數(shù)字面量的一些簡(jiǎn)化寫(xiě)法
while 循環(huán)
組合和繼承–使用組合還是繼承?
訪問(wèn)控制修飾符
Trait 示例–Rectangular 對(duì)象
組合和繼承–定義參數(shù)化成員變量
組合和繼承–定義無(wú)參數(shù)方法
類和對(duì)象 (一)
函數(shù)–閉包
函數(shù)–類成員函數(shù)
Scala 基本數(shù)據(jù)類型的實(shí)現(xiàn)方法
try 表達(dá)式處理異常
選擇瘦接口還是胖接口設(shè)計(jì)?
組合和繼承–小結(jié)
創(chuàng)建新的控制結(jié)構(gòu)
使用 import
為訪問(wèn)控制修飾符添加作用域
Scala 的類層次關(guān)系
類和對(duì)象 (五)
傳名參數(shù)
柯里化函數(shù)
函數(shù)–頭等公民
組合和組合和繼承–定義 heighten 和 widen 函數(shù)
使用 Package–將代碼放入包中
隱含的 import
所有類的公共子類–底層類型
進(jìn)一步 Scala
函數(shù)–局部函數(shù)
引用包中的代碼
組合和繼承–使用 override 修飾符
組合和繼承–實(shí)現(xiàn)類 Element 的 above,beside 和 toString()方法
類和對(duì)象 (四)
函數(shù)–尾遞歸
沒(méi)有“break”和“continue”的日子
組合和繼承–調(diào)用基類構(gòu)造函數(shù)
減低代碼重復(fù)
函數(shù)–函數(shù)–可變參數(shù),命名參數(shù),缺省參數(shù)
起步 Scala
組合和繼承–擴(kuò)展類
函數(shù)–部分應(yīng)用的函數(shù)
開(kāi)始神奇的 Scala編程之旅
組合和繼承–概述
Trait 用來(lái)實(shí)現(xiàn)可疊加的修改操作

函數(shù)–函數(shù)字面量的一些簡(jiǎn)化寫(xiě)法

Scala 提供了多種方法來(lái)簡(jiǎn)化函數(shù)字面量中多余的部分,比如前面例子中 filter 方法中使用的函數(shù)字面量,完整的寫(xiě)法如下:

 (x :Int ) => x +1

首先可以省略到參數(shù)的類型,Scala 可以根據(jù)上下文推算出參數(shù)的類型,函數(shù)定義可以簡(jiǎn)化為:

 (x) => x +1

這個(gè)函數(shù)可以進(jìn)一步去掉參數(shù)的括號(hào),這里的括號(hào)不起什么作用:

 x => x +1

Scala 還可以進(jìn)一步簡(jiǎn)化,Scala 允許使用“占位符”下劃線”_”來(lái)替代一個(gè)或多個(gè)參數(shù),只要這個(gè)參數(shù)值函數(shù)定義中只出現(xiàn)一次,Scala編譯器可以推斷出參數(shù)。比如:

scala> val someNumbers = List ( -11, -10, - 5, 0, 5, 10)
someNumbers: List[Int] = List(-11, -10, -5, 0, 5, 10)
scala> someNumbers.filter(_ >0)
res0: List[Int] = List(5, 10)

可以看到簡(jiǎn)化后的函數(shù)定義為 > 0,你可以這樣來(lái)理解,就像我們以前做過(guò)的填空題,“”為要填的空,Scala 來(lái)完成這個(gè)填空題,你來(lái)定義填空題。

有時(shí),如果你使用_來(lái)定義函數(shù),可能沒(méi)有提供足夠的信息給 Scala 編譯器,此時(shí) Scala 編譯器將會(huì)報(bào)錯(cuò),比如,定義一個(gè)加法函數(shù)如下:

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

Scala 編譯器無(wú)法推斷出_的參數(shù)類型,就報(bào)錯(cuò)了,但如果你給出參數(shù)的類型,依然可以使用_來(lái)定義函數(shù),比如:

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

因?yàn)?em>替代的參數(shù)在函數(shù)體中只能出現(xiàn)一次,因此多個(gè)“_”代表多個(gè)參數(shù)。第一個(gè)“_”代表第一個(gè)參數(shù),第二個(gè)“\”代表第二個(gè)參數(shù),以此類推。