Как идиоматически обрабатывать нулевые проверки в Scala / Lift? - PullRequest
7 голосов
/ 20 октября 2010

Даже с преобладанием монад Box и Option нам все равно придется проверять наличие нулевых значений здесь и там.Лучшее, что я придумал, это использование Box # !!Метод:

(Box !! possiblyNull).map(_.toString).openOr("")

Есть ли лучший способ сделать это?Я пытался использовать метод применения Box:

Box(possiblyNull).map(_.toString).openOr("")

Но компилятор жаловался на неоднозначную ссылку на перегруженное определение, а именно:

[InType,OutType](value: InType)
(pf: PartialFunction[InType,OutType])net.liftweb.common.Box[OutType]

Я не уверен, почему это происходит, ноЯ надеялся, что будет более короткий и краткий способ сказать «Дайте мне значение этой строки или просто» ». Я думал об использовании трио, но считал расточительным иметь дело с исключением, когда его можно избежать.

1 Ответ

13 голосов
/ 20 октября 2010

Я не знаю, о чем Box. Но вот простой пример использования Option:

scala> val str1:String="abc"
str1: String = abc

scala> val str2:String=null
str2: String = null

scala> Option(str1).getOrElse("XXX")
res0: String = abc

scala> Option(str2).getOrElse("XXX")
res1: String = XXX
...