2016-09-08 1 views
-2

Ich habe die folgende Anweisung, die Daten von Redis DB mit client erhält. Für einige Einträge gibt es null zurück. Wie kann ich nach null suchen und sie durch 0 in einer einzigen Zeile ersetzen? Gibt es etwas Ähnliches wie getOrElse? Oder vielleicht kann ich irgendwie Option[String] verwenden? Ich möchte vermeiden, if qty_str == null zu verwenden.Auf Null prüfen und durch 0 ersetzen

val qty_str : String = Dress.up(client).hget("pk:"+ind,"qty") 
+2

ich für 'getOrElse' auf' Option gehen würde [Zeichenfolge] ' – sebszyller

+0

ich verwendet habe,' hincrby field_name 0 ', tut es effektiv, was Sie wollen ... :) –

+0

@sebszyller: Ja, aber wie um es in diesem speziellen Fall anzuwenden? Dieser Ansatz kompiliert nicht: 'al qty_str: Option [String] = Dress.up (Client) .hget (" pk: "+ ind," qty "). GetOrElse (??)' – Lobsterrrr

Antwort

1

Option Die Funktion wird ein T, die in eine Option[T] null sein könnte. Sobald Sie das haben, können Sie map verwenden, um Ihre Option[String] in eine Option[Int] zu konvertieren, gefolgt von getOrElse, um None durch Ihren Standardwert zu ersetzen.

val qty_not_null : Option[String] = Option(qty_str) 
val qty_int : Int = qty_not_null.map(_.toInt).getOrElse(0)