Latest web development tutorials

Opcja Scala (opcja)

zbiory Scala zbiory Scala

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.

zbiory Scala zbiory Scala