【发布时间】:2015-02-09 19:54:36
【问题描述】:
我正在尝试在 scala 中返回地图。这是我的代码:
val interestRegEx = """(\w+) Interests \((.+ Interest)\)""".r
val singleAttributes = Seq("Sport Interests (Some Interest):Running,Swimming","Something else:True")
val interests = singleAttributes.map { x =>
// e.g. ("Sport Interests (Some Interest)", "Running,Swimming") should
// result in ("Sport Running" -> "Some Interest", "Sport Swimming" -> "Some Interest")
val attVal = x.split(':')
attVal(0) match {
case interestRegEx(interestProduct, interestAmount) =>
Some(attVal(1).split(",").map { i =>
Map(s"$interestProduct $i" -> interestAmount)
}.reduce(_ ++ _))
case _ => None
}
}.fold(Map[String, String]())(_) //.reduce(_ + _)
问题是试图将集合减少为单个 Map[String, String]。我认为折叠可能会起作用,但因为它可能不需要在之后添加reduce(_ + _),但这也不起作用。
我不明白的部分是 IntelliJ 告诉我 interests 的类型为 ((Equals, Equals) => Equals) => Equals。怎么回事?这些Equals 来自哪里,为什么不只是将所有 Map 加在一起以返回包含所有键和值的 Map?
【问题讨论】:
标签: scala