Latest web development tutorials

Opción Scala (Opción)

colecciones Scala colecciones Scala

Scala Opción (Opción) tipo utilizado para representar un valor es opcional (para el valor o ningún valor).

Opción [T] es un tipo de valor contenedor T opcional: Si existe el valor, la opción [T] es una Algunos [T], si no existe, la opción [T] es el objeto Ninguno.

A continuación nos fijamos en un trozo de código:

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

En el código anterior, myMap uno es un tipo de clave es String, String Tipo de valor es un mapa de hash, pero no es el mismo que su get () devuelve una categoría denominada Opción [cadena].

Scala utilizando la opción [cadena] que le diga: "Voy a tratar de devolver una cadena, pero no le puede dar la cadena."

myMap no se key2 estos datos, get () devuelve Ninguno.

Opción dos subcategorías, uno Alguien es Ninguno, cuando regreso Parte del tiempo, en nombre de esta función con éxito le dio una cadena, y se puede () para conseguir esto a través de la cadena GET, Si regresa Ninguno, no representa ninguna cadena que puede dar.

Otro ejemplo:

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

Aplicación del código anterior, la salida es:

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

Puede también la salida para que coincida con el valor de coincidencia de patrones. Ejemplos son los siguientes:

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

Aplicación del código anterior, la salida es:

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

getOrElse método ()

Puede utilizar el método getOrElse () para obtener la tupla que existe o utilizar los valores por defecto, los ejemplos son los siguientes:

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

Aplicación del código anterior, la salida es:

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

estaVacia método ()

Usted puede utilizar el método estaVacia () para detectar si el elemento de la tupla en Ninguno, ejemplos son los siguientes:

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

Aplicación del código anterior, la salida es:

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

Opción Scala método común

La siguiente tabla muestra la opción Scala métodos comúnmente utilizados:

No. Método y Descripción
1

def conseguir: Un

Obtener valor opcional

2

def estaVacia: Boolean

valor de tipo opcional para detectar si Ninguno, este es el caso devuelve verdadero, falso en caso contrario

3

def productArity: Int

Devuelve el número de elementos, A (x 1, ..., x_k), regresa k

4

def productElement (n: Int): Cualquier

Obtiene las opciones especificadas, a partir de cero. A saber, A (x 1, ..., x_k), volver x_ (n + 1), 0 <n <k.

5

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

Si la opción de si las condiciones de elemento especificado existe y no es ninguno devuelve verdadero, de lo contrario, devuelve false.

6

def del filtro (P: (A) => Boolean): Opción [A]

Con Si la opción contiene el valor, y se pasa a filtrar vuelve verdadera, filtro devuelve algunos casos. De lo contrario, el valor de retorno es Ninguno.

7

def filterNot (p: (A) => Boolean): Opción [A]

Con Si la opción contiene el valor, y se pasa a filtrar vuelve falsa, filtro devuelve algunos casos. De lo contrario, el valor de retorno es Ninguno.

8

def flatMap [B] (f: (A) => Opción [B]): Opción [B]

Si la opción tiene un valor, a continuación, pasa a la función f regresa después del tratamiento, de lo contrario, devuelve None

9

def foreach [T] (f: (A) => T): Unidad

Si la opción contiene un valor, entonces cada valor pasa a la función f, o no tratada.

10

def getOrElse [B>: A] (por defecto: => B): B

Si la opción tiene un valor, se devuelve el valor de la opción, de lo contrario establecen los valores por defecto.

11

def IsDefined: Boolean

Si el valor opcional es una instancia Algunas declaraciones de verdad, de lo contrario devuelve false.

12

def iterador: Iterator [A]

Si la opción tiene un valor, un valor de iteración opcional. Si el valor opcional está vacía se devuelve iterador vacía.

13

def mapa [B] (f: (A) => B): Opción [B]

Si la opción contiene el valor devuelto por la función f un post-procedimiento, de lo contrario devolverá None

14

def OrElse [B>: A] (alternativa: => Opción [B]): Opción [B]

Si una opción es Ninguno, el método OrElse devuelve el valor del parámetro de nombre, de lo contrario, devuelve directamente a la opción.

15

def orNull

Si la opción contiene los valores de opción Valor de retorno, en caso contrario devuelve nulo.

colecciones Scala colecciones Scala