2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach

举报
Lansonli 发表于 2021/09/27 23:15:23 2021/09/27
【摘要】 目录 遍历  foreach 使用类型推断简化函数定义 使用下划线来简化函数定义 遍历  foreach 之前,学习过了使用for表达式来遍历集合。我们接下来将学习scala的函数式编程,使用foreach方法来进行遍历、迭代。它可以让代码更加简洁。 用途: foreach 会帮我们对集合中的每一个元...

目录

遍历  foreach

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

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


遍历  foreach

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

用途:

foreach 会帮我们对集合中的每一个元素取出来进行处理, 处理的逻辑由我们自行定义

集合中的元素,都会传入给你提供的函数去计算

 

方法签名

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

f 表明一个函数, A表明传入的参数 =>表明函数返回值是Unit, foreach 整体返回值Unit

说明

foreach

API

说明

参数

f: (A) ⇒ Unit

接收一个函数对象<br />函数的输入参数为集合的元素,返回值为空

返回值

Unit

 

foreach执行过程

我们传入foreach的是一个函数, 那么怎么工作的呢?

foreach 帮我们把集合中的每一个元素取出来, 然后传给函数, 然函数进行操作

如下图

 

示例

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

 

参考代码


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

 

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

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

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

 

示例

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

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

 

参考代码


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

 

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

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

我们来强调一下要求:

参数只在函数体(注意是函数体, 不包含参数定义那里)里出现一次

对这个参数没有复杂的调用, 如(if for 等循环 或迭代等嵌套, 或者在println语句中等(通俗来说就是被括号包起来了))

示例

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

使用下划线简化函数定义

 

参考代码


  
  1. scala> val a = List(1,2,3,4)
  2. a: List[Int] = List(1234)
  3. a.foreach(println(_))

 

  • 如果方法参数是函数,如果出现了下划线,scala编译器会自动将代码封装到一个函数中
  • 参数列表也是由scala编译器自动处理

https://www.baeldung.com/scala/underscore

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/116505712

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。