天天看點

Scala偏函數

内容:

1、Scala偏函數實戰

2、Scala偏函數解析

val data = List(1, 2, 3, 4, 5, 6)
    data.foreach(println _)
    data.foreach(x => println(x))
           
<span style="font-family: 宋體; background-color: rgb(255, 255, 255);">Println _</span><span style="font-family: 宋體; background-color: rgb(255, 255, 255);">這種下劃線代表若幹個參數的函數稱為偏函數,偏函數實際是值類型一種表達式,這種表達式在使用時候隻提供部分參數,是以可以将其指派給一個常量。</span>
           
def sum(a: Int, b: Int, c: Int) = a + b + c
    println(sum(1, 2, 3))
    
    val fp_a = sum _
    println(fp_a(1, 2, 3))
    println(fp_a.apply(1, 2, 3))
    val fp_b = sum(1, _: Int, 3)
    println(fp_b(2))
    println(fp_b(10))
           

//以上代碼中偏函數sum _指派給常量fp_a,且提供部分參數,但在實際使用的時候,要對函數定義的參數進行全部指派fp_a(1,2,3);

  Fp_a.apply(1,2,3)實際是調用的function方法的apply函數,參數類型均為int,編譯器會自動識别sum_缺少的3個參數,apply擷取到這3個參數,并将其傳給sum;

調用fp_b(10)時候,雖提供部分參數,_:int 但必須指明類型。