我有一个Scala Map
,其中包含我在HTTP请求中获得的一堆参数。
val queryParams = Map( ("keyword" -> "k"), ("from" -> "f"), ("to" -> "t"), ("limit" -> "l") )
我采用了一种获取所有这些参数的方法。
def someMethod( keyword: String, from: String, to: String, limit: String) = { //do something with input params }
我想将地图中的参数传递给我的方法someMethod
。
queryParams.get
会返回Option
。所以我可以为每个输入参数调用类似queryParams.get("keyword").getOrElse("")
的内容。
someMethod( queryParams.get("keyword").getOrElse(""), queryParams.get("from").getOrElse(""), queryParams.get("to").getOrElse(""), queryParams.get("limit").getOrElse(""))
有更好的方法吗?
答案 0 :(得分:7)
如果所有参数都具有相同的默认值,您可以为整个地图设置default value:
val queryParams = Map( ("keyword" -> "k"), ("from" -> "f"), ("to" -> "t"), ("limit" -> "l") ).withDefaultValue("")
someMethod( queryParams("keyword"), queryParams("from"), queryParams("to"), queryParams("limit"))
withDefaultValue
返回一个Map,对于任何不存在的值,返回默认值。现在您确定总是得到一个值,您可以使用queryParams("keyword")
(没有get函数)。