Opzione Scala (opzionale)
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. |