2014-10-26 1 views
3

У меня есть Scala Map, который содержит кучу параметров, которые я получаю в HTTP-запросе.Параметры Dealing от Map.get в Scala

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("")) 

Есть ли лучший способ?

ответ

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 возвращать карту, которая для любой неотрицательной существует значение возвращаемого значения по умолчанию. Теперь, когда вы уверены, что всегда получаете значение, вы можете использовать queryParams("keyword") (без функции get).

 Смежные вопросы

  • Нет связанных вопросов^_^