Scala Option (Option)
Scala Option (Option) verwendet einen Wert darzustellen ist optional (Wert oder kein Wert).
Option [T] ist eine Art von Behälter optional Wert T: Wenn der Wert vorhanden ist, Option [T] ist ein Teil [T], wenn Sie nicht existieren, Option [T] ist das Objekt Keine.
Als nächstes schauen wir uns ein Stück Code:
// 虽然 Scala 可以不定义变量的类型,不过为了清楚些,我还是 // 把他显示的定义上了 val myMap: Map[String, String] = Map("key1" -> "value") val value1: Option[String] = myMap.get("key1") val value2: Option[String] = myMap.get("key2") println(value1) // Some("value1") println(value2) // None
In dem obigen Code ist ein myMap ein Schlüsseltyp ist String, ist String Typ Wert ein Hash-Karte, aber nicht das gleiche wie sein get () gibt eine benannte Option [Zeichenfolge] Kategorie.
Scala die Option [Zeichenfolge] mit Ihnen zu sagen: "Ich werde versuchen, einen String zurück, aber es können Sie den String nicht geben."
myMap wurde diese Daten nicht Schlüssel2, get () Methode None zurück.
Option zwei Unterkategorien, ein Teil ist None, wenn er einen Teil der Zeit zurückkehren, der im Auftrag dieser Funktion erfolgreich hat Ihnen einen String, und Sie können () Funktion dies durch den String zu bekommen bekommen, Wenn er keine gibt, stellt es keine Zeichenfolge Ihnen geben kann.
Ein weiteres Beispiel:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "www.w3big.com", "google" -> "www.google.com") println("sites.get( \"w3big\" ) : " + sites.get( "w3big" )) // Some(www.w3big.com) println("sites.get( \"baidu\" ) : " + sites.get( "baidu" )) // None } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ scalac Test.scala $ scala Test sites.get( "w3big" ) : Some(www.w3big.com) sites.get( "baidu" ) : None
Sie können auch die Ausgabe den Wert durch Mustervergleich entsprechen. Beispiele sind wie folgt:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "www.w3big.com", "google" -> "www.google.com") println("show(sites.get( \"w3big\")) : " + show(sites.get( "w3big")) ) println("show(sites.get( \"baidu\")) : " + show(sites.get( "baidu")) ) } def show(x: Option[String]) = x match { case Some(s) => s case None => "?" } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ scalac Test.scala $ scala Test show(sites.get( "w3big")) : www.w3big.com show(sites.get( "baidu")) : ?
getOrElse () -Methode
Sie können getOrElse () -Methode verwenden, um das Tupel erhalten, die die Standardwerte vorhanden sind oder verwenden, Beispiele sind wie folgt:
object Test { def main(args: Array[String]) { val a:Option[Int] = Some(5) val b:Option[Int] = None println("a.getOrElse(0): " + a.getOrElse(0) ) println("b.getOrElse(10): " + b.getOrElse(10) ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ scalac Test.scala $ scala Test a.getOrElse(0): 5 b.getOrElse(10): 10
isEmpty () -Methode
Sie können die isEmpty () -Methode verwenden, ob das Tupelelement auf None zu erkennen, Beispiele sind wie folgt:
object Test { def main(args: Array[String]) { val a:Option[Int] = Some(5) val b:Option[Int] = None println("a.isEmpty: " + a.isEmpty ) println("b.isEmpty: " + b.isEmpty ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ scalac Test.scala $ scala Test a.isEmpty: false b.isEmpty: true
Scala Option gängige Methode
Die folgende Tabelle listet die Scala Option häufigsten verwendeten Methoden:
Nein. | Verfahren und Beschreibung |
---|---|
1 | def bekommen: A Erhalten Sie optional Wert |
2 | def isEmpty: Boolean Optional Werttyp, ob auf keine Erfassung, ist dies der Fall, gibt true zurück, andernfalls false |
3 | def productArity: Int Gibt die Anzahl der Elemente, A (x_1, ..., x_k), kehrt k |
4 | def productElement (n: int): Alle Ruft die angegebenen Optionen, beginnend mit Null. Nämlich A (x_1, ..., x_k), Rückkehr x_ (n + 1), 0 <n <k. |
5 | def existiert (p: (A) => Boolean): Boolean Wenn die Option, ob das Element angegebenen Bedingungen existiert und nicht Keine true zurück, andernfalls wird false zurückgegeben. |
6 | Filter def (p: (A) => Boolean): Option [A] Con Wenn die Option den Wert enthält, und übergeben true zurück zu filtern, gibt Filter einigen Fällen. Ansonsten ist der Rückgabewert Keine. |
7 | def filterNot (p: (A) => Boolean): Option [A] Con Wenn die Option den Wert enthält, und übergeben false zurück zu filtern, gibt Filter einigen Fällen. Ansonsten ist der Rückgabewert Keine. |
8 | def flatMap [B] (f: (A) => Option [B]): Option [B] Wenn die Option einen Wert hat, dann auf die Funktion f kehrt nach der Behandlung übergeben, andernfalls gibt es keine |
9 | def foreach [U] (f: (A) => U): Einheit Wenn die Option einen Wert enthält, dann übergeben jeder Wert auf die Funktion f, oder nicht behandelt. |
10 | def getOrElse [B>: A] (Standard: => B): B Wenn die Option einen Wert hat, wird der Optionswert zurückgegeben, andernfalls werden die Standardwerte gesetzt. |
11 | def IsDefined: Boolean Wenn der optionale Wert ist eine Instanz Einige gibt true zurück, andernfalls false zurück. |
12 | def Iterator: Iterator [A] Wenn die Option hat einen Wert, einen optionalen Wert Iteration. Wenn der optionale Wert leer leer Iterator zurückgegeben. |
13 | map def [B] (f: (A) => B): Option [B] Wenn die Option den Wert enthält, durch die Funktion f Einige Nachbearbeitung zurückgegeben, andernfalls None zurück |
14 | def OrElse [B>: A] (alternativ: => Option [B]): Option [B] Wenn eine Option ohne ist, gibt OrElse Methode, um den Wert des Parameters mit Namen, sonst, gibt sie direkt an die Option. |
15 | def orNull Wenn die Option enthält die Werte der Option Wert zurück, andernfalls null zurück. |