Latest web development tutorials

Opzione Scala (opzionale)

collezioni Scala collezioni Scala

Scala Opzione (opzionale) tipo usato per rappresentare un valore è opzionale (per il valore o nessun valore).

Opzione [T] è un tipo di contenitore valore opzionale T: Se il valore esiste, Riservato [T] è un Alcuni [T], se non esistono, l'opzione [T] è l'oggetto Nessuno.

Prossimo guardiamo un pezzo di codice:

// 虽然 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

Nel codice precedente, myMap uno è un tipo di chiave è String, String Tipo di valore è una mappa hash, ma non lo stesso come il suo get () restituisce una categoria denominata Opzione [String].

Scala utilizzando l'opzione [String] per dirvi: "Cercherò di restituire una stringa, ma non si può dare la stringa."

myMap non è stato key2 questi dati, metodo get () restituisce None.

Opzione due sottocategorie, uno Qualcuno è Nessuno, quando tornare Qualche volta, a nome di questa funzione con successo ti ha dato una stringa, e si può () per ottenere questo attraverso la stringa ottenere, Se egli restituisce None, rappresenta nessuna stringa può dare.

Un altro esempio:

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
   }
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
sites.get( "w3big" ) : Some(www.w3big.com)
sites.get( "baidu" ) : None

È possibile anche l'uscita in modo che corrisponda al valore da pattern matching. Esempi sono i seguenti:

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 => "?"
   }
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
show(sites.get( "w3big")) : www.w3big.com
show(sites.get( "baidu")) : ?

Metodo getOrElse ()

È possibile utilizzare il metodo getOrElse () per ottenere la tupla che esiste o utilizzare i valori di default, gli esempi sono i seguenti:

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) )
   }
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
a.getOrElse(0): 5
b.getOrElse(10): 10

Metodo isEmpty ()

È possibile utilizzare il metodo isEmpty () per rilevare se l'elemento tupla su Nessuno, esempi sono i seguenti:

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 )
   }
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
a.isEmpty: false
b.isEmpty: true

Scala Opzione metodo comune

La seguente tabella elenca l'opzione Scala metodi comunemente usati:

No. Metodo e Descrizione
1

DEF ottenere: A

Ottenere valore opzionale

2

DEF isEmpty: booleano

valore del tipo opzionale rilevare se su Nessuno, questo è il caso restituisce true, altrimenti false

3

DEF productArity: Int

Restituisce il numero di elementi, A (x_1, ..., x_k), torna k

4

def productElement (n: Int): Qualsiasi

Ottiene le opzioni specificate, partendo da zero. Vale a dire A (x_1, ..., x_k), tornare x_ (n + 1), 0 <n <k.

5

def esiste (p: (A) => booleana): booleano

Se l'opzione se le condizioni specificate elemento esiste e non è None restituisce true, altrimenti restituisce false.

6

def filtrare (p: (A) => booleana): Opzione [A]

Con Se l'opzione contiene il valore, e passato a filtrare i rendimenti vero, filtro restituisce alcuni casi. In caso contrario, il valore restituito è None.

7

def filterNot (p: (A) => booleana): Opzione [A]

Con Se l'opzione contiene il valore, e passato a filtrare restituisce false, il filtro restituisce alcuni casi. In caso contrario, il valore restituito è None.

8

DEF flatMap [B] (f: (A) => Opzione [B]): Opzione [B]

Se l'opzione ha un valore, poi passato alla funzione f ritorna dopo il trattamento, altrimenti ritorna None

9

DEF foreach [U] (f: (A) => U): Unità

Se l'opzione contiene un valore, allora ogni valore passato alla funzione f, o non trattato.

10

DEF getOrElse [B>: A] (default: => B): B

Se l'opzione ha un valore, il valore dell'opzione viene restituito, altrimenti i valori di default impostati.

11

DEF TestDefinito: booleano

Se il valore è un'istanza opzionale Alcuni restituisce vero, altrimenti restituisce false.

12

DEF iteratore: Iterator [A]

Se l'opzione ha un valore, un valore di iterazione opzionale. Se il valore opzionale è vuoto viene restituito iteratore vuota.

13

DEF mappa [B] (f: (A) => B): Opzione [B]

Se l'opzione contiene il valore, restituito dalla funzione f Alcuni post-elaborazione, altrimenti restituisce None

14

DEF OrElse [B>: A] (alternativa: => Opzione [B]): Opzione [B]

Se una opzione è Nessuno, il metodo orelse restituisce il valore del parametro in base al nome, altrimenti, restituisce direttamente al Option.

15

DEF orNull

Se l'opzione contiene i valori di opzione valore di ritorno, altrimenti restituire null.

collezioni Scala collezioni Scala