首页 > 解决方案 > 闭包符号 `x => {}` 是什么意思?

问题描述

.map(line => {
//transformation and actions
})

在 Scala 中,我将看到这种转换,以及在一些执行其他操作或转换的行中。我的问题是:这种转换叫什么,转换后的最终状态是什么,还有其他写法吗?

标签: scala

解决方案


map是一个高阶函数,它期望另一个函数作为参数。它被广泛使用,您可以使用 , 等常见结构OptionSeq查看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)]


推荐阅读