4.2Scala的函数基础 #Scala #函数基础

4.2.1 scale定义函数

在Scala中,定义函数的方式非常灵活,支持多种不同的定义方式。以下是一些基本的函数定义方法,我们将使用单个字母或双字母变量来表示参数和返回值:

object Test16_1{
/**

          (一)函数的字面量语法
          (二)把函数作为参数
          (三)把函数作为返回值
          (四)Scala的函数的闭包
          (五)函数的格里化格式
          (六)Scala部分应应用函数

**/

  //
  def sum(x: Int, y: Int): Int = {
    x + y
  }


  def main(args: Array[String]): Unit = {
    var sum1=(x:Int,y:Int)=>{
      x+y
    }
    // 简写1. 代码只有一句, 可以省略 { }
    var res2 = (x:Int, y:Int) => x+y

    // 简写2:形参可以使用占位符来代替
    //    var sum3 : Int = 1
    //         (Int,Int) => Int  表示一种类型,是一个函数,需要两个int类型的参数,返回一个int类型的结果
    val sum3: (Int, Int) => Int = _ + _
    //    var res =sum(100,200)
    val res = sum3(200, 200)
    println(res)
  }
}

4.2.2 把函数作为参数

将函数作为参数传递给另一个函数是一种常见的函数式编程技术。这种方式使得代码更加灵活和模块化。

object Test16_2 {
  //把函数当做参数来使用
  def main(args: Array[String]): Unit = {

    //字面量的方式定义函数
    var sum = (x:Int ,y:Int)=> x+y

    //糕点1
    var mul = (x: Int, y: Int) => x * y

    // op 本身是一个函数,它的第一个参数是一个函数的类型 。(Int,Int) =>Int 是一个类型
    // 美团
    var op =(callback:(Int,Int) =>Int, x:Int, y:Int) => {
      callback(x,y)
    }

//    var rs = op(sum,100,200)
    var rs = op(mul,100,200)

    println(rs)
    println(sum(100,200))
    println(mul(100,200))
  }

3. 使用闭包计算结果

类名:Test16_4

知识点:

  • 闭包:函数可以捕获并使用外部定义的变量。

参考点:

  • 使用元组和闭包来计算和返回结果。

文章:

Test16_4示例展示了如何使用闭包来计算两个数的加倍和。这是一个简单的例子,说明了闭包如何在函数式编程中用于存储状态。

object Test16_4 {
  def main(args: Array[String]): Unit = {
    val d = (3, 4)
    println(s"加倍加法的结果是:$d")
  }
}

3. 函数的柯里化

类名:Test16_5

知识点:

  • 柯里化:将一个多参数的函数转换成多个单参数函数的序列。

参考点:

  • 使用柯里化来定义和使用函数。

文章:

Test16_5示例展示了Scala中的柯里化,这是一种将多参数函数转换为一系列单参数函数的技术。这使得函数调用更加灵活。

object Test16_5 {
  def fn(x: Int)(y: Int)(z: Int) = {
    println(x, y, z)
  }

  def main(args: Array[String]): Unit = {
    var f = fn(1)(2) _ // 使用下划线作为占位符
    f(30)
  }
}

通过这些示例,我们可以看到Scala如何支持函数式编程的基本概念,如函数作为参数和返回值,以及柯里化。这些特性使得Scala在处理复杂逻辑和数据转换时非常强大和灵活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值