val ps = Seq(1 -> NEXT_SCREEN_PARAMETER_NAME,
-1 -> PREV_SCREEN_PARAMETER_NAME,
Int.MaxValue -> LAST_SCREEN_PARAMETER_NAME)
val test = StringUtils.isNotBlank(request.getParameter(_ : String))
(ps.view map { case (i,n) => i -> test(n) }) collect { case (i, true) => i } headOption getOrElse 0
Используя скалас, вы можете использовать функцию map map (∘∘):
ps.∘∘[PartialApply1Of2[Tuple2, Int]#Apply, String, Boolean](test)
collect { case (i, true) => i } headOption orZero
Как всегда в Scalaz, очень жаль, что вывод типа scala не может вывести частично примененные конструкторы типов. Тогда у вас будет:
(ps ∘∘ test) collect { case (i, true) => i } headOption orZero