入门 Scala 代码 六 (函数,闭包)

在这里插入图片描述

//函数
object Test0801 {
  // def 定义函数
  //max 函数名
  //(x:Int,y:Int)  参数名,参数类型
  //:Int={}      返回值类型
  def max(x:Int,y:Int):Int={
    if(x > y)
      x
    else
      y
  }


  def main(args: Array[String]): Unit = {
      val a =  max(1,4)
      println(a)

      //  函数字面量 function literal =>左侧的表示输入,右侧表示转换操作
      val b = (x:Int)=>x+1
      println(b(10))

      //上面的语句等同于
      def c(x:Int)= x+1
      println(c(11))


      //多个语句使用
      val d=(x:Int)=>{
        println("赵丽颖")
        println("杨幂")
        x+1
    }
      println(d(12))


    //调用函数

    //1.数组的map 方法调用(第一种方法)
    val e =Array(1,2,3,4).map(b).mkString(",")
    println(e)
    //2.匿名函数调用(第二种方法)
    val f=Array(1,2,3,4).map((x:Int)=>x+1).mkString(",")
    println(f)
    //3.花括方式(第三种方法)
    val g=Array(1,2,3,4).map{(x:Int)=>x+1}.mkString(",")
    println(g)
    //4.省略点(第四种方法)
    val h =Array(1,2,3,4)map{(x:Int)=>x+1}mkString(",")
    println(h)
    //5.参数类型推断写法( 第五种方法)
    val i =Array(1,2,3,4)map{x=>x+1}mkString(",")
    println(i)
    //6.函数只有一个参数的话,可以省略()  (第六种方法)
    val j=Array(1,2,3,4)map{x=>x+1}mkString(",")
    println(j)
    //7.如果参数右面只出现一次,可以省略(第七种方法)
    val k=Array(1,2,3,4)map{_+1}mkString(",")
    println(k)



    //值函数

    //  第一种方法
    val a1=1 +  (_:Int)
    println(a1(10))

    //第二种方法
    val a2:(Int) => Int  =1+_
    println(a2(11))


    //函数参数(高级函数)
    //定义函数
    def b1(x:(Int) => Int)=x(4)
    //调用
    println( b1((x:Int)=>x+1) )
    println( b1(_+2) )



    //函数闭包
    //
    var c1 = 1
    var fun =(x:Int)=>x+c1
    println(fun(1))

    c1 = 10
    println(fun(10))
    //像这种运行时确定 c1 类型及值的函数称为闭包,c1 是个自由变量,在运行时其值和类型得以确定
    //这是一个由开放(free)到封闭的过程,因此称为闭包

    val more =List(1,2,3,4,-2,-1)
    var sum = 0

    more.foreach(sum += _)
    println(sum)

    more.foreach(sum += _)
    println(sum)

  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值