Scala Option (Opção)
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. |