Scala:Function1、Function2

Scala开篇(目录)

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)))
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bdmh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值