每天學(xué)一點Scala之Currying函數(shù)

1、Curring函數(shù) 定義?

成都創(chuàng)新互聯(lián)公司專注于東寶網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供東寶營銷型網(wǎng)站建設(shè),東寶網(wǎng)站制作、東寶網(wǎng)頁設(shè)計、東寶網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造東寶網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供東寶網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

    將原來接收兩個參數(shù)的一個函數(shù),轉(zhuǎn)換為兩個函數(shù),第一個函數(shù)接收原先的第一個參數(shù),然后返回接收原先第二個參數(shù)的第二個函數(shù)。

在函數(shù)調(diào)用的過程中,就變?yōu)榱藘蓚€函數(shù)連續(xù)調(diào)用的形式

在marathon源碼以及Spark的源碼中,也有體現(xiàn),所以對()()這種形式的Curring函數(shù),要理解。

2、例子:

object CurryingTest {
   def main(args: Array[String]): Unit = {
      println("---->:\t" + sum(3,4))
      println("---->:\t" + sum2(5))
      println("---->:\t" + sum2(5)(1))
      // 柯里函數(shù)
      println("---->:\t" + sum3(4)(8))
   }
   def sum(a: Int, b: Int) = a + b
   def sum2(a: Int) = (b: Int) => a + b  // 由sum函數(shù)轉(zhuǎn)換成sum3函數(shù)時的中間過程
   def sum3(a: Int)(b: Int) = a + b
}

其實,柯里函數(shù)到底用在什么場景下,并沒有真正理解。

目前,僅僅是,只要看到

sum3(a: Int)(b: Int) = a + b

這種形式,可以直接理解成 或者等價于 

sum(a: Int, b: Int) = a + b

形式

分享題目:每天學(xué)一點Scala之Currying函數(shù)
轉(zhuǎn)載注明:http://bm7419.com/article42/igcghc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)App設(shè)計、云服務(wù)器定制開發(fā)、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)