scala - 如何在惯用的 Scala 中对其进行编码?

标签 scala

假设我想在 Scala 中编写一个函数 def pair(s:String):Option[(String, String)] 来将字符串转换为键值对。该字符串应类似于 "<key>:<value>"

您将如何更正下面的解决方案?

def pair(s:String) = {
val a = s.split(":"); if (a.length == 2) Some((a(0).trim, a(1).trim)) else None
}

最佳答案

我个人觉得两种方法更好一些:

def pair(s: String) = s.split(":") match {
  case Array(k, v) => Some(k.trim -> v.trim)
  case _ => None
}

或者使用 Scala 方便的正则表达式提取器:
val Pair = """\s*([^\s:]+)\s*:\s*([^\s:]+)\s*""".r

def pair(s: String) = s match {
  case Pair(k, v) => Some(k -> v)
  case _ => None
}

但是,是的,你的也没有那么糟糕。

关于scala - 如何在惯用的 Scala 中对其进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21728738/

相关文章:

scala - sbt 自动插件 - 禁用它们,但只针对一个子项目

java - 将 Scala 单位转换为 Java Void

java - 是否有用于解析 gettext PO 文件的 Java 库?

scala - 如何计算两个 'Duration'之间的 'DateTimes'

容器嵌套类型的Scala隐式转换

json - 如何使用 scala 中的 json4s 库测试我为解析器创建的案例类是否正确?

multithreading - Scala 的阻塞上下文似乎不适用于混合阻塞/非阻塞作业。为什么?

scala - 如何合并或跳过 Scala Actor 中的重复消息?

Scala 可迭代到 ParIterable

scala - Scala 中 Select 语句中的 Math.abs 函数