程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Scala:Function1、Function2

Scala:Function1、Function2

編輯:關於C++

Scala開篇(目錄)

Function1 andThen compose Function2 curried tupled

Function1

帶一個參數的方法,聲明時,它需要兩個泛型參數,第一個是傳入的數據類型,第二個表示返回的數據類型,Function1是 trait ,它有一個apply方法,用來對輸入參數進行處理了,使用Function1,必須實現apply接口

val funs = new Function1[Int,Int] {
  def apply(x:Int) = {
    x + 1
  }
}

//使用
println(funs.apply(5))      // 6

andThen

和另一個Function1實例組合成一個新的Function1實例,當前這個方法先執行,執行完的結果作為另一個方法的入參

    val funs = new Function1[Int,Int] {
      def apply(x:Int) = {
        println("第一步:"+x)
        x + 1
      }
    }
    val succ = (x: Int) => {
      println("第二步:"+x)
      x + 3
    }
    println(succ.andThen(funs).apply(5))
    /**
    第二步:5
    第一步:8
    */

compose

與andThen想法,同樣是組合成新的Function1,但是作為參數的那個Function1先執行

//依然執行這個打印過程
println(succ.compose(funs).apply(5))
/**
第一步:5
第二步:6
*/

Function2

帶兩個參數的方法,它的聲明需要三個泛型參數,前兩個是入參類型,第三個是返回數據類型,同Function1一樣,也要實現apply方法

val funs = new Function2[Int,Int,Int] {
  def apply(x:Int,y:Int) = {
    x + y
  }
}
println(funs.apply(1,2))    //  3

curried

為當前方法創建一個柯裡化的版本

val funs = new Function2[Int,Int,Int] {
  def apply(x:Int,y:Int) = {
    x + y
  }
}
val curryfun = funs.curried
println(curryfun(1)(2))     //  3

tupled

為當前方法創建一個tupled(元組)版本

val funs = new Function2[Int,Int,Int] {
  def apply(x:Int,y:Int) = {
    x + y
  }
}
val tupledfun = funs.tupled
println(tupledfun((1,2)))
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved