Latest web development tutorials

Scala Option (Option)

Scala Sammlungen Scala Sammlungen

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.

Scala Sammlungen Scala Sammlungen