将特定值映射到其他内容的简写是什么?

时间:2016-03-11 01:05:21

标签: scala functional-programming

所以我想做的是将Traversable中的特定值映射到其他内容。为了说明,

scala> Seq("hello", "\\N", "world").map { s =>
     |   s match {
     |     case "\\N" => null
     |     case _ => s
     |   }
     | }
res1: Seq[String] = List(hello, null, world)

虽然这有效,但它需要的线路比我想要的多得多。是否有简要的简写来实现同样的目标?

2 个答案:

答案 0 :(得分:0)

Seq("hello","\\N","world").map(s => if (s == "\\N") null else s)

答案 1 :(得分:0)

定义Map个替换,

val m = Map("\\N" -> (null:String))

因此,如果未在Map中声明,则从Map或原始值获取替换值,

Seq("hello", "\\N", "world").map(v => m.getOrElse(v,v))