Latest web development tutorials

Scala Option (Opção)

coleções Scala coleções Scala

Scala Option (Opção) do tipo usado para representar um valor é opcional (por valor ou nenhum valor).

Option [T] é um tipo de recipiente valor opcional T: Se o valor existir, a opção [T] é um Alguns [T], se não existir, a opção [T] é o objeto Nenhum.

Em seguida nós olhar para um pedaço 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

No código acima, myMap um é um tipo de chave é String, String Tipo de valor é um mapa de hash, mas não o mesmo que o seu get () retorna uma categoria chamada Opção [String].

Scala usando a opção [String] a dizer-lhe: "Vou tentar retornar uma String, mas não pode dar-lhe a cadeia."

myMap não foi KEY2 esses dados, get () retorna Nenhum.

Opção duas subcategorias, um Alguém é Nenhuma, quando ele retornar Algumas das vezes, em nome desta função com sucesso deu-lhe um String, e você pode () função para obter isso através do Corda obter, Se ele retorna None, representa nenhuma seqüência pode dar-lhe.

Outro exemplo:

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

Implementação do código acima, a saída é:

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

Você pode também de saída para corresponder ao valor por correspondência de padrão. Exemplos são os seguintes:

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

Implementação do código acima, a saída é:

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

getOrElse () Método

Você pode usar o método getOrElse () para obter a tupla que existe ou usar os valores padrão, os exemplos são os seguintes:

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

Implementação do código acima, a saída é:

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

isEmpty () Método

Você pode usar o método isEmpty () para detectar se o elemento de tupla para Nenhum, os exemplos são os seguintes:

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

Implementação do código acima, a saída é:

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

Scala Opção método comum

A tabela a seguir lista a opção Scala métodos comumente utilizados:

Não. Método e Descrição
1

def obtém: A

Obter valor opcional

2

def isEmpty: Boolean

valor de tipo opcional detectar se para Nenhum, este é o caso retorna verdadeiro, caso contrário false

3

productArity def: Int

Retorna o número de elementos, A (x_1, ..., x_k), retorna k

4

def productElement (n: int): Qualquer

Obtém as opções especificadas, começando com zero. Ou seja, A (x_1, ..., x_k), retornar x_ (n + 1), 0 <n <k.

5

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

Se a opção se as condições de elemento especificado existe e não é Nenhum retorna verdadeiro, caso contrário, retorna false.

6

def filtrar (p: (A) => Boolean): Opção [A]

Con Se a opção contém o valor, e passou para filtrar retornos verdade, o filtro retorna alguns casos. Caso contrário, o valor de retorno é Nenhum.

7

DEF filterNot (p: (A) => booleano): Opção [A]

Con Se a opção contém o valor, e passou para filtrar retornos falsa, o filtro retorna alguns casos. Caso contrário, o valor de retorno é Nenhum.

8

def flatMap [B] (f: (A) => Opção [B]): Opção [B]

Se a opção tem um valor, então passado para a função f retorna após o tratamento, caso contrário ele retorna None

9

DEF foreach [L] (f: (A) => L): Unidade

Se a opção contém um valor, então cada valor passado para a função f, ou não tratados.

10

def getOrElse [B>: A] (padrão: => B): B

Se a opção tem um valor, o valor da opção é devolvido, caso contrário, os valores padrão definido.

11

def IsDefined: Boolean

Se o valor opcional é uma instância Alguns retorna true, caso contrário, retorna false.

12

def iterator: Iterator [A]

Se a opção tem um valor, uma iteração valor opcional. Se o valor opcional está vazia iterador vazio é retornado.

13

DEF mapear [B] (f: (A) => B): Opção [B]

Se a opção contém o valor retornado pela função f Alguns pós-processamento, caso contrário retorna None

14

def OrElse [B>: A] (alternativa: => Opção [B]): Opção [B]

Se a opção é None, método OrElse retorna o valor do parâmetro pelo nome, caso contrário, retorna diretamente para a opção.

15

def orNull

Se a opção contém os valores de opção valor retornar, caso contrário, retornar nulo.

coleções Scala coleções Scala