Scala 将特定值映射到其他值的简写方法是什么?
所以我想做的是将Scala 将特定值映射到其他值的简写方法是什么?,scala,functional-programming,Scala,Functional Programming,所以我想做的是将可遍历的中的特定值映射到其他值。举例来说 scala> Seq("hello", "\\N", "world").map { s => | s match { | case "\\N" => null | case _ => s | } | } res1: Seq[String] = List(hello, null, world) 虽然这是可行的,但它需要比我希望的更多的线。有没
可遍历的中的特定值映射到其他值。举例来说
scala> Seq("hello", "\\N", "world").map { s =>
| s match {
| case "\\N" => null
| case _ => s
| }
| }
res1: Seq[String] = List(hello, null, world)
虽然这是可行的,但它需要比我希望的更多的线。有没有简明扼要地达到同样的目的的速记法?定义替换的Map
Seq("hello","\\N","world").map(s => if (s == "\\N") null else s)
val m = Map("\\N" -> (null:String))
因此,从映射中获取替换值,或者如果未在映射中声明,则获取原始值
Seq("hello", "\\N", "world").map(v => m.getOrElse(v,v))
重复问题的可能重复已使用较短的形式。为什么要使用null
?通常,在我两年的Scala专业经验中,有一个社会契约,开发者不会在代码库中使用null
,也就是说,不需要检查Scala代码中的NPE。因为我认为这些\N
在Spark数据框中被解释为null
s。我也不喜欢null
s。但我不认为还有其他选择。这听起来是一个简单但优雅的方法。谢谢