Mik*_*yer 5 scala enumerate punctuation
我想在scala中执行以下操作:
val l = List("An apple", "a pear", "a grapefruit", "some bread")
... some one-line simple function ...
"An apple, a pear, a grapefruit and some bread"
Run Code Online (Sandbox Code Playgroud)
用这种方式编写它的最短方法是什么?
到目前为止,我最好的尝试是:
def makeEnumeration(l: List[String]): String = {
var s = ""
var size = l.length
for(i <- 0 until size) {
if(i > 0) {
if(i != size - 1) { s += ", "
} else s += " and "
}
s += l(i)
}
s
}
Run Code Online (Sandbox Code Playgroud)
但这很麻烦.任何的想法?
sen*_*nia 15
val init = l.view.init
val result =
if (init.nonEmpty) {
init.mkString(", ") + " and " + l.last
} else l.headOption.getOrElse("")
Run Code Online (Sandbox Code Playgroud)
init返回除最后一个元素之外的所有元素,view允许您在init不创建集合副本的情况下获取.
对于空集合head(和last)将抛出异常,所以你应该使用headOption,lastOption如果你不能证明你的集合不是空的.
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |