每天学一点Scala之 匿名函数

1、  定义

如果一个函数没有名字的话,就是匿名函数了。只使用一次,并没有多次调用

2、  匿名函数的使用场景

    1. 将匿名函数,直接赋值给变量
    2. 将匿名函数,作为函数的参数进行使用

3、  匿名函数的几种表现形式?或者呈现形式

    1. 没有参数输入,没有返回值的匿名函数
    2. 有参数输入,没有返回值的匿名函数
    3. 有参数输入,有返回值的匿名函数

4、  匿名函数的语法规则,有两种形式吧:[一种有输入参数,一种没有输入参数]

    1. (参数名:参数类型) => 函数体
    2. 函数体
package com.xej.learning.nimingFunction

object AnonymousFunction {
   def main(args: Array[String]): Unit = {
      //对于有参数输入的匿名函数,调用时,同样要用参数输入哦
      kafkaName("apache kafka")
      println("--->:\t" + flumeName("apache flume"))
      sparkName

      //匿名函数的使用场景--1,作为参数,传入给高阶函数
      //下面,map,foreach里,就是匿名函数
      Array(3,2,1,5).map{(x: Int) => x + 2}.foreach(x => print(x + " "))

      println("\n----------------------------------------------------")

      Array(3,2,1,5).map{_ + 1}.foreach(x => print(x + " "))
   }

   //匿名函数的使用场景--2,直接赋值给变量
   //参数:有参数输入,函数体:无返回值,形式的匿名函数//函数体里,可能有很多条语句哦,
   //只是最终结果,是有返回值的
   val kafkaName = (name: String) => println("--kafka-->" + name)

   //参数:有参数输入,函数体:有返回值,形式的匿名函数
   val flumeName = (name: String) => "--flume-->" + name

   //参数:无参数输入,函数体:无返回值,形式的匿名函数
   val sparkName = println("----this is spark------")
}

spark源码,marathon源码中,都大量使用了匿名函数

下面是marathon源码中的样例

时间: 2024-08-29 08:37:11

每天学一点Scala之 匿名函数的相关文章

每天学一点Scala之 Currying函数

1.Curring函数 定义? 将原来接收两个参数的一个函数,转换为两个函数,第一个函数接收原先的第一个参数,然后返回接收原先第二个参数的第二个函数. 在函数调用的过程中,就变为了两个函数连续调用的形式 在marathon源码以及Spark的源码中,也有体现,所以对()()这种形式的Curring函数,要理解. 2.例子: object CurryingTest {    def main(args: Array[String]): Unit = {       println("---->

每天学一点Scala之Scala与Java的区别?

A.Scala是编译型语言,可以随意调用Java代码: B.  Scala函数式编程语言,在scala世界里,函数才是一等公民: 函数可以作为参数进行传递,可以赋值给变量,可以作为返回值进行返回 scala中,具有嵌套函数.匿名函数.高阶函数.偏函数 scala支持闭包

每天学一点Scala之 闭包

定义 函数在变量不处于其有效作用域时,还能够对变量进行访问,即为闭包:也就是说,变量超出了其作用域,还可以使用,就是闭包现象. 可能针对的使用场景之一? 比方说,年底了,公司针对每个部门的奖金是不同.比方说,销售部门奖金为10000,研发部门是15000,测试部门12000等,就可以使用闭包来实现 例子,如下: object BiBaoTest {    def main(args: Array[String]): Unit = {       val salesDepartment = add

每天学一点Scala之 高阶函数 map

要清楚,map函数的本质是?或者说map函数到底是用来干什么的? 可以参考下面的例子: marathon源码,spark源码中大量使用了高阶函数map, 如下面是marathon的源码

每天学一点Scala之 高阶函数 flatten

flatten 就是将多个集合展开,组合成新的一个集合. 下面是marathon源码用到flatten的场景

每天学一点Scala之 方法与函数的区别

每天学一点Scala之implict 隐式参数

什么是隐式参数? 在函数或者方法中,定义一个用implicit关键字修饰的参数:此参数就是隐式参数了.Scala会自动尝试在作用域内查询用implicit修饰的对象,并自动注入参数 Scala查找隐式参数的范围? 一种是当前作用域内可见的var或val定义的隐式变量 一种是隐式参数类型的伴生对象的隐式值 第二个例子

每天学一点Scala之内部类

1.  scala 里同样可以定义内部类 2.  每个外部类的对象的内部类,都是不同的类,因此,存数组时,要注意 3.  内部类可以访问外部类的私有属性,反之不行 package com.xej.learning.class_learning /**   * Created by erjun on 2017/8/28.   * 内部类测试   */ private[class_learning] class Kafka{    //定义一个内部类    class InnerKafka(val 

每天学一点Scala之class 构造器

A.scala中类的构造器分为: 主构造器 从构造器 B.  主构造器 参数列表,就写在类名后面: 主构造器内容:类里,除了字段定义和方法定义外的内容,就是主构造器的内容了. C.  从构造器 类里,以def this开头的,都是从构造器, 从构造器的第一行,必须调用主构造器,或者,调用其他从构造器:其实,就是限制,从构造器的第一行,必须是主构造器,主构造器是类的唯一入口点.