gpt4 book ai didi

scala - 执行此操作的 Scala 方法是什么

转载 作者:行者123 更新时间:2023-12-02 06:40:21 25 4
gpt4 key购买 nike

尝试解析返回 Map[String, Seq[String]] 的 request.queryString

var route = ""
var queryString = "?"
for((k,v) <- request.queryString) {
if(k == "route"){ route = v.head }
else {
queryString += k +"="+ v.head +"&"
}
}
queryString = queryString.substring(0, queryString.length() -1 );

这工作正常但非常必要。我确信有一种更实用的方法可以做到这一点。有帮助吗?

最佳答案

帮助就在这里!评论过多。

val RouteKey = "route"

val route = request
.getOrElse(RouteKey, Nil) // will return the route, or empty list
.headOption // either Some[head] or None
.getOrElse("") // if None, empty string

val queryString = (request - RouteKey) // remove the route from the request
.map { case (k, v) => // map each key/value pair
k + "=" + v.headOption.getOrElse("") } // into key=value strings
.mkString("?", "&", "") // make that list into a single string

您会注意到我使用相同的模式从列表中安全地获取 head 来处理空列表。如果您发现自己经常这样做,那么您可以将该方法添加到 Seq[String]

implicit def pimpedStringSeq(seq: Seq[String]) = new {
def headStr = seq.headOption.getOrElse("")
}

val RouteKey = "route"

val route = request.getOrElse(RouteKey, Nil).headStr

val queryString = (request - RouteKey).map { case (k, v) => k + "=" + v.headStr }
.mkString("?", "&", "")

关于scala - 执行此操作的 Scala 方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com