Sou*_*nta 3 monads scala option
我有一个Scala Map
,它包含我在HTTP请求中获得的一堆参数.
val queryParams = Map( ("keyword" -> "k"), ("from" -> "f"), ("to" -> "t"), ("limit" -> "l") )
Run Code Online (Sandbox Code Playgroud)
我有一个采用所有这些参数的方法.
def someMethod( keyword: String, from: String, to: String, limit: String) = { //do something with input params }
Run Code Online (Sandbox Code Playgroud)
我想将地图中的参数传递给我的方法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(""))
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法 ?
如果所有参数都具有相同的默认值,则可以为整个Map 设置默认值:
val queryParams = Map( ("keyword" -> "k"), ("from" -> "f"), ("to" -> "t"), ("limit" -> "l") ).withDefaultValue("")
someMethod( queryParams("keyword"), queryParams("from"), queryParams("to"), queryParams("limit"))
Run Code Online (Sandbox Code Playgroud)
withDefaultValue
返回一个Map,对于任何不存在的值,返回默认值.现在你确定你总是得到一个你可以使用的值queryParams("keyword")
(没有get函数).