bas*_*h0r 4 scala pattern-matching
我正在学习Scala,我很惊讶.这种语言非常优雅地处理了很多问题.但是,在匹配列表的最后一个元素时遇到了问题.
我们来看看这段代码:
def stringify(list: List[String]): String = list match {
case x :: xs => x + (if (xs.length != 0) ":" else "") + stringify(xs)
case Nil => ""
}
Run Code Online (Sandbox Code Playgroud)
这是非常不优雅的,我想更直观地写它,像这样:
def stringify(list: List[String]): String = list match {
case x :: xs => x + ":" + stringify(xs)
case x :: Nil => x
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
提前致谢!
您需要切换订单.该xs标志将急切地匹配该位置的任何.尝试匹配Nil将使该语句不再无法访问.此外,您仍需要Nil自行匹配以计算空列表.
def stringify(list: List[String]): String = list match {
case x :: Nil => x
case x :: xs => x + ":" + stringify(xs)
case Nil => ""
}
Run Code Online (Sandbox Code Playgroud)
虽然mkString已经做了你想做的事情.
| 归档时间: |
|
| 查看次数: |
2825 次 |
| 最近记录: |