Scala mkString,最后一个除外
我想在scala中执行以下操作:Scala mkString,最后一个除外,scala,enumerate,punctuation,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" 这样写的最短方法是什么 到目前为止,我最好的尝试是: def makeEnumeration(l: List[String]): String = { var
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"
这样写的最短方法是什么
到目前为止,我最好的尝试是:
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
}
def makeEnumeration(l:List[String]):String={
var s=“”
变量大小=l.长度
对于(i 0){
如果(i!=大小-1){s+=“,”
}其他s+=“和”
}
s+=l(i)
}
s
}
但它相当麻烦。有什么想法吗
val init = l.view.init
val result =
if (init.nonEmpty) {
init.mkString(", ") + " and " + l.last
} else l.headOption.getOrElse("")
init
返回除最后一个元素之外的所有元素,view
允许您获取init
,而无需创建集合的副本
对于空集合,
head
(和last
)将引发异常,因此如果无法证明集合不是空的,则应使用headOption
和lastOption
。我不知道init和last。即使使用它们在算法上不高效,它们在这种情况下也是有用的。