scala - 闭包符号 `x => {}` 是什么意思?
问题描述
.map(line => {
//transformation and actions
})
在 Scala 中,我将看到这种转换,以及在一些执行其他操作或转换的行中。我的问题是:这种转换叫什么,转换后的最终状态是什么,还有其他写法吗?
解决方案
map
是一个高阶函数,它期望另一个函数作为参数。它被广泛使用,您可以使用 , 等常见结构Option
。Seq
查看List
签名,您可以尝试了解它的作用:
map[B](f: A => B)
想象一个List[A]
,map
方法需要一个转换A
成的函数,B
它将列表中的所有元素转换为B
类型。
更具体地说,想象一个整数列表List[Int]
,您可以传递一个将 Int 转换为 String 的函数,Int => String
您将得到一个List[String]
结果。
正如B
“开放”一样,您几乎可以将任何内容传递给该map
方法
此外,您可以将定义的函数传递给map
,您可以传递一个匿名函数(只是代码本身),()
如果代码只有一行,您可以使用它,或者{}
如果您编写多行,则使用作为您的示例。
如果.map(line => {})
你可以在里面添加几乎任何你想要的东西{}
,你可能会line
在里面使用。
例如:
.map(line => {
val a = "my line has "
a + line.length.toString + " characters"
})
在它的情况下List
将它转换成另一个List[String]
另一个返回多个值的示例,如@francoisr 评论
.map(line => {
val l = line.lenght
(l, line) //what we return
}
它会给你一个List[(Int, String)]
推荐阅读
- r - 当 B 列和 C 列中有 2 个条件时,A 列中的最大值
- java - 如何检索存储在 LinkedList 中的对象的字段值?
- c - C fscanf - 格式化输入
- javascript - 使用 React 进行身份验证
- angular - 如何通过来自 Unsplash 的 GET random photo API 调用在 Bootstrap 模态中显示图像
- c# - 公共聊天程序:Windows 窗体、C#
- sql - 为什么 R 数据框导出到 SQL Server 不起作用?
- awk - 比较两个文件时grep缺少行
- oracle-apex - 将用户 apex oracle 维护 = 'N' 更改为 'Y'
- html - 如何使我的下拉菜单链接更宽?