假设我想在 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/