zoukankan      html  css  js  c++  java
  • 大三寒假学习 spark学习 函数定义 匿名函数和闭包

    匿名函数;

    我们不需要给每个函数命名,这时候可以使用匿名函数:

    ( num: Int ) => num*2

    上面这种匿名函数的定义形式,我们经常称为“Lambda表达式”。“Lambda表达式”的形式如下:

    ( 参数 ) => 表达式//参数只有一个,括号可以省略

    示例:

    val myNumFunc: Int => Int =( num: Int ) => num*2
    println(myNumFunc(3))

    运行结果:

    Scala具有类型推断机制,我们可以将myNumFunc的类型省略掉:

    val myNumFunc = (num: Int) => num*2

    但是把右边的Int也省略掉,解释器将无法推断出类型,如果给出函数的类型则不会报错:

    val myNumFunc: Int => Int =( num ) => num*2

    闭包:

    闭包也是一种函数,是一种特殊的函数

    普通函数

    val addMore=(x:Int)=>x>0

    闭包

    val addMore=(x:Int) =>x+more

    为什么叫闭包,下面举个例子说明

    首先我们看到,闭包函数中多了一个未知的变量more

    当我们执行addMore(10)的时候,程序会找到var more =1对函数中的more进行绑定

    此时 函数中的more由一个开放的未知的变量,变成了已知的变量

    闭包反映了一个有开放到封闭的过程

  • 相关阅读:
    windows cmd 编码
    ARM伪指令
    System.load 和 System.loadLibrary
    用GDB调试程序
    ARM指令集
    ARM寻址方式
    abortion
    Oxford City Jealous Lover
    everyday words
    【转】高效率的C++函数返回值
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15809114.html
Copyright © 2011-2022 走看看