Scala高阶函数说明和使用

本文详细介绍了Scala中的高阶函数,包括如何作为值传递、匿名函数的使用、函数参数类型推断,以及通过实例演示了函数作为参数和返回值的应用。了解并掌握这些概念有助于提升代码的灵活性和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scala高阶函数说明和使用

函数在Scala中是“头等公民”,它的使用方法和任何其他变量是一样的。所谓高阶函数(Higher-Order Function)就是操作其他函数的函数。Scala 中允许使用高阶函数, 高阶函数可以使用其他函数作为参数,或者使用函数作为输出结果。

函数作为值被传递和赋值

Scala中可以将函数赋值给varvaldef定义的变量,代码实例如下:

object HigherOrderFunctionOps1 {
  def main(args: Array[String]): Unit = {
    sayHello("Old One")
    val sayTwo=sayHello _
    sayTwo("Old Two")
    var sayThree=sayHello _
    sayThree("Old Three")
    def sayFour=sayHello _
    sayFour("Old Four")
  }
  def sayHello(name: String): Unit ={
    println(s"${name} say Hello to you!")
  }

这里有个约定:将函数赋值给变量时,必须在函数后加上空格和下划线。

匿名函数

匿名函数顾名思义是没有函数名的函数,这种函数在使用的使用必须将函数赋值给其他变量或者函数。语法形式是:

(函数参数) => {代码块} 或 返回值类型

代码实例如下:

object HigherOrderFunctionOps2 {
  def main(args: Array[String]): Unit = {
    var printMag=(name:String) => println(s"${name}搞偷袭,不讲武德!")
    printMag("年轻人")
    var niceSub=()=> println("好感减1!")
    niceSub()
    var numSub=(num:Int) => num-1
    println(s"当前好感度:${numSub(5)}")
  }
}

高阶函数定义和参数类型推断

有了匿名函数和函数作为值传递的语法基础,就可以定义高阶函数了。下面是函数作为函数参数的使用实例:

object HigherOrderFunctionOps3 {
  def main(args: Array[String]): Unit = {
    funOps
  }
  def funOps: Unit ={
    def sayBye(name:String,fun:(String)=>Unit): Unit ={
      fun(name)
    }
    sayBye("张三",(name:String)=>method(name))//调用有名函数
    sayBye("李四",(name:String)=>{
      println(s"${name}真是个人才!")//调用匿名函数
    })
  }
  def method(str:String): Unit ={
    println(s"${str}是名字!")
  }
}

Scala提供了一个使用通配符_ 下划线替代参数的用法,或直接使用函数名的方法:

 sayBye("王五", println(_))//类型推断
  sayBye("赵四", println)//类型推断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值