Opcja Scala (opcja)
Opcja Scala (opcja) typ używany do reprezentowania wartości jest opcjonalne (dla wartości lub bez wartości).
Opcja [T] jest rodzajem pojemnika Opcjonalna wartość T: Jeśli wartość istnieje, opcja [T] jest Niektóre [T], jeśli nie istnieje, opcja [T] jest przedmiotem Brak.
Następnie patrzymy na kawałek kodu:
// 虽然 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
W powyższym kodzie, MyMap jeden jest typu String klucz jest typu String Value znajduje się mapa hash, ale nie takie same jak jego get () zwraca kategorię o nazwie Opcja [String].
Scala za pomocą opcji [String], aby powiedzieć: "postaram się zwracać ciąg, ale nie może dać ci String".
MyMap nie Klawisz2 te dane, get () Metoda zwraca None.
Opcja dwie podkategorie, jeden Część z nich jest brak, kiedy wróci na jakiś czas, w imieniu tej funkcji powodzeniem dał ci String i można () funkcja, aby to uzyskać przez String, Jeśli zwróci None, reprezentuje żaden łańcuch nie może dać.
Inny przykład:
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 } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test sites.get( "w3big" ) : Some(www.w3big.com) sites.get( "baidu" ) : None
Można również wyjście dopasować wartość dopasowując wzór. Przykłady są następujące:
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 => "?" } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test show(sites.get( "w3big")) : www.w3big.com show(sites.get( "baidu")) : ?
Metoda getOrElse ()
Można użyć metody getOrElse (), aby uzyskać krotki, że istnieje lub użyć wartości domyślnych, przykłady przedstawiają się następująco:
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) ) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test a.getOrElse(0): 5 b.getOrElse(10): 10
Metoda isEmpty ()
Można użyć metody isEmpty () w celu wykrycia, czy elementu krotki sobie równych, przykłady przedstawiają się następująco:
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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test a.isEmpty: false b.isEmpty: true
Opcja Scala powszechna metoda
Poniższa tabela zawiera listę opcji Scala powszechnie stosowane metody:
Nie. | Sposób i opis |
---|---|
1 | def uzyskać: a Uzyskaj wartość opcjonalna |
2 | def isEmpty: Boolean Opcjonalna wartość typu wykrywania czy None, jest to przypadek zwraca true, false w przeciwnym wypadku |
3 | def productArity: Int Zwraca liczbę elementów, A (x_1, ..., x_k), powraca k |
4 | def productElement (n: int): Wszelkie Pobiera określone opcje, poczynając od zera. Mianowicie A (x_1, ..., x_k), powrót x_ (n + 1), 0 <n <k. |
5 | def istnieje (P: (A) => Boolean): Boolean Jeśli opcja czy warunki określone elementu istnieje i nie jest None zwraca true, w przeciwnym razie zwraca false. |
6 | def filtrować (P: (A) => Boolean): Opcja [A] Con Jeśli opcja zawiera wartość, i przeszedł do filtrowania Zwraca true, filtr powraca niektórych przypadkach. W przeciwnym wypadku zwracana jest wartość Brak. |
7 | def filterNot (P: (A) => Boolean): Opcja [A] Con Jeśli opcja zawiera wartość, i przeszedł do filtrowania zwraca false, filtr powraca niektórych przypadkach. W przeciwnym wypadku zwracana jest wartość Brak. |
8 | def flatMap [B] (f: (A) => Opcja [B]): Opcja [B] Jeśli ta opcja ma wartość, a następnie przekazywane do funkcji f wraca po leczeniu, w przeciwnym razie zwróci None |
9 | def foreach [U] (f: (A) => U): Unit Jeśli opcja zawiera wartość, wówczas każda wartość przekazywana do funkcji f, czy nie leczyć. |
10 | def getOrElse [b>: A] (domyślnie: => B): D Jeśli ta opcja ma wartość, wartość opcji jest zwracana, w przeciwnym razie ustawić wartości domyślne. |
11 | def isDefined: Boolean Jeśli wartość opcjonalna jest instancją Niektóre zwraca true, w przeciwnym razie zwraca false. |
12 | def iterator: Iterator [A] Jeśli ta opcja ma wartość, opcjonalną iteracji wartości. Jeżeli wartość jest pusta opcjonalnie zwracany jest pusty iterator. |
13 | def map [B] (f: (A) => B): Opcja [B] Jeśli opcja zawiera wartość, zwrócony przez funkcję f Niektóre post-processing, inaczej powrócić None |
14 | def OrElse [b>: A] (alternatywnie: => Opcja [B]): Opcja [B] Jeśli opcja jest Żadna metoda OrElse zwraca wartość parametru według nazwy, w przeciwnym razie, to zwraca się bezpośrednio do tej opcji. |
15 | def orNull Jeśli opcja zawiera wartości opcji wartości powrotu, w przeciwnym razie zwróci null. |