如何在scala中返回一个Map类型?

mnemlml8  于 2023-03-12  发布在  Scala
关注(0)|答案(3)|浏览(188)

在scala中有什么方法可以让一个函数返回一个map类型的输出?
我能找到的唯一方法是在最后使用.toMap
例如:

val names: List[String] = List("abc","abcd","abcde")
val out_map: Map[String,Int] = names.map(x=>x->x.length())

结果

Found:    List[(String, Int)]
Required: Map[String, Int]

只有我这么做才有效

val out_map: Map[String,Int] = names.map(x=>x->x.length()).toMap

这是返回Map类型的“方式”吗?总是必须在以后转换元组集合吗?或者,我是否遗漏了一些语法来直接声明匿名函数,这样就不需要.toMap了?

9lowa7mx

9lowa7mx1#

.map方法名称指的是mapping a function-调用x.map(f)应理解为“使用函数fMapx中的每个值-其中Map意味着将每个值转换为函数的参数,并在此参数处获取函数的值。
这与Map相似但不完全相同,Map表示一个数据结构,通常称为字典。在纯数学中,“Map”和“Map结构”可能相似/相关,但它们在编程语言中的实现侧重于不同的事情,不应该混淆。要将标准库的元组集合转换为Map,您应该调用.toMap

2ul0zpep

2ul0zpep2#

是的,这是相当标准的方法-将列表转换为元组,并在其上使用toMap

val names: List[String] = List("abc", "abcd", "abcde")
val out_map: Map[String, Int] = names
  .distinct // I prefer explicit safeguard against duplicates, though it can be skipped at least in modern versions
  .map(s => (s, s.length())) // or .map(s => s -> s.length())
  .toMap
qnyhuwrf

qnyhuwrf3#

尝试使用:

val names: List[String] = List("abc", "abcd", "abcde")
val out_map: Map[String, Int] = Map(names.map(x => x -> x.length()): _*)

它使用Map工厂方法,并将键-值对作为参数。

相关问题