美文网首页
Scala函数编程

Scala函数编程

作者: 你值得拥有更好的12138 | 来源:发表于2019-09-25 16:29 被阅读0次

    函数式编程

    我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面的这些操作是学习的重点。

    • 遍历(foreach
    • 映射(map
    • 映射扁平化(flatmap
    • 过滤(filter
    • 是否存在(exists
    • 排序(sortedsortBysortWith
    • 分组(groupBy
    • 聚合计算(reduce
    • 折叠(fold

    遍历 | foreach

    之前,学习过了使用for表达式来遍历集合。我们接下来将学习scala的函数式编程,使用foreach方法来进行遍历、迭代。它可以让代码更加简洁。

    方法签名

    foreach(f: (A) ⇒ Unit): Unit
    

    说明

    foreach API 说明
    参数 f: (A) ⇒ Unit 接收一个函数对象<br />函数的输入参数为集合的元素,返回值为空
    返回值 Unit

    foreach执行过程

    image.png

    示例

    有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素

    参考代码

    // 定义一个列表
    scala> val a = List(1,2,3,4)
    a: List[Int] = List(1, 2, 3, 4)
    
    // 迭代打印
    scala> a.foreach((x:Int)=>println(x))
    

    使用类型推断简化函数定义

    上述案例函数定义有点啰嗦,我们有更简洁的写法。因为使用foreach去迭代列表,而列表中的每个元素类型是确定的

    • scala可以自动来推断出来集合中每个元素参数的类型
    • 创建函数时,可以省略其参数列表的类型

    示例

    1. 有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素
    2. 使用类型推断简化函数定义

    参考代码

    scala> val a = List(1,2,3,4)
    a: List[Int] = List(1, 2, 3, 4)
    
    // 省略参数类型
    scala> a.foreach(x=>println(x))
    

    使用下划线来简化函数定义

    当函数参数,只在函数体中出现一次,而且函数体没有嵌套调用时,可以使用下划线来简化函数定义

    示例

    1. 有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素
    2. 使用下划线简化函数定义

    参考代码

    scala> val a = List(1,2,3,4)
    a: List[Int] = List(1, 2, 3, 4)
    
    a.foreach(println(_))
    
    • 如果方法参数是函数,如果出现了下划线,scala编译器会自动将代码封装到一个函数中
    • 参数列表也是由scala编译器自动处理

    相关文章

      网友评论

          本文标题:Scala函数编程

          本文链接:https://www.haomeiwen.com/subject/ojmmectx.html