Latest web development tutorials

Option Scala (Option)

collections Scala collections Scala

Option Scala (option) de type utilisé pour représenter une valeur est facultative (pour la valeur ou pas de valeur).

Option [T] est un type de conteneur valeur facultative T: Si la valeur existe, Option [T] est une partie [T], si vous n'existe pas, Option [T] est l'objet Néant.

Ensuite, nous regardons un morceau de 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

Dans le code ci-dessus, myMap un est un type de clé est String, String Valeur Type est une carte de hachage, mais pas la même chose que son get () retourne une catégorie Option nommée [chaîne].

Scala en utilisant l'option [chaîne] pour vous dire: «Je vais essayer de renvoyer une chaîne, mais il ne peut pas vous donner la chaîne."

myMap n'a pas été key2 ces données, get () retourne None.

Option deux sous-catégories, l'une Quelqu'un est None, quand il retourne partie du temps, au nom de cette fonction vous a donné avec succès une chaîne, et vous pouvez () pour obtenir ce à travers la chaîne obtenir, S'il retourne None, il ne représente aucune chaîne ne peut vous donner.

Un autre exemple:

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

Mise en œuvre du code ci-dessus, la sortie est:

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

Vous pouvez également la sortie pour correspondre à la valeur par correspondance de motif. Des exemples sont les suivants:

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

Mise en œuvre du code ci-dessus, la sortie est:

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

méthode getOrElse ()

Vous pouvez utiliser la méthode getOrElse () pour obtenir le tuple qui existent ou utiliser les valeurs par défaut, les exemples sont les suivants:

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

Mise en œuvre du code ci-dessus, la sortie est:

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

méthode isEmpty ()

Vous pouvez utiliser la méthode isEmpty () pour détecter si l'élément de tuple à Aucun, des exemples sont les suivants:

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

Mise en œuvre du code ci-dessus, la sortie est:

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

Scala Option méthode commune

Le tableau suivant répertorie l'option Scala méthodes couramment utilisées:

Non. Méthode et description
1

def obtenir: A

Obtenez valeur facultative

2

def isEmpty: Boolean

valeur de type facultatif détecter si à Aucun, tel est le cas renvoie true, sinon false

3

def productArity: Int

Renvoie le nombre d'éléments, A (x 1, ..., x_k), revient k

4

def productElement (n: Int): Tous

Obtient les options spécifiées, à partir de zéro. A savoir A (x_1, ..., x_k), retour x_ (n + 1), 0 <n <k.

5

existe def (p: (A) => Boolean): Boolean

Si l'option si les conditions élément spécifié existe et est pas Aucun retourne vrai, sinon il retourne faux.

6

def filtre (p: (A) => Boolean): Option [A]

Con Si l'option contient la valeur, et passé à filtrer renvoie true, filtre retourne certains cas. Dans le cas contraire, la valeur de retour est None.

7

def filterNot (p: (A) => Boolean): Option [A]

Con Si l'option contient la valeur, et passé à filtrer renvoie false, filtre retourne certains cas. Dans le cas contraire, la valeur de retour est None.

8

def flatMap [B] (f: (A) => Option [B]): Option [B]

Si l'option a une valeur, puis transmis à la fonction f revient après le traitement, sinon il retourne None

9

foreach def [U] (f: (A) => U): Unité

Si l'option contient une valeur, alors chaque valeur passée à la fonction f, ou non traitée.

10

def getOrElse [B>: A] (par défaut: => B): B

Si l'option a une valeur, la valeur de l'option est retourné, sinon les valeurs par défaut définies.

11

def isDefined: Boolean

Si la valeur facultative est une instance Certains renvoie true, sinon retourne false.

12

def iterator: Iterator [A]

Si l'option a une valeur, une itération de valeur facultative. Si la valeur optionnelle est vide vide iterator est retourné.

13

carte def [B] (f: (A) => B): Option [B]

Si l'option contient la valeur retournée par la fonction f Certains post-traitement, sinon retourner Aucun

14

def OrElse [B>: A] (variante: => Option [B]): Option [B]

Si une option est None, la méthode OrElse renvoie la valeur du paramètre par nom, sinon, elle renvoie directement à l'option.

15

def orNull

Si l'option contient les valeurs d'option valeur de retour, sinon retourner null.

collections Scala collections Scala