Latest web development tutorials

Scala Option (Опция)

коллекции Scala коллекции Scala

Scala Option (Опция) типа используется для представления значения не является обязательным (для значения или нет значения).

Опция [T] представляет собой тип контейнера факультативное значение T: Если значение существует, Option [T] является не Некоторые [T], если вы не существует, Option [T] является объектом None.

Далее мы рассмотрим кусок кода:

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

В приведенном выше коде, MyMap один ключевой тип String, String Тип значения является хэш-карта, но не то же самое, как его получить () возвращает категорию с именем Опция [String].

Scala с помощью опции [String], чтобы сказать вам: "Я буду стараться возвращать строку, но она не может дать вам строки."

MyMap не Клавишу2 эти данные, получаем () метод возвращает None.

Вариант два подкатегорий, один Кто-то его нет, когда он вернется Часть времени, от имени этой функции успешно дал вам строку, и вы можете () функцию, чтобы получить это через строку получить, Если он не возвращает None, оно представляет собой не строка не может дать вам.

Другой пример:

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

Реализация указанного выше кода, выход:

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

Вы можете также выводить в соответствии со значением путем сопоставления с образцом. Примерами могут служить следующие:

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

Реализация указанного выше кода, выход:

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

Метод getOrElse ()

Вы можете использовать метод getOrElse (), чтобы получить кортеж, который существует или использовать значения по умолчанию, примеры заключаются в следующем:

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

Реализация указанного выше кода, выход:

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

Метод IsEmpty ()

Вы можете использовать метод IsEmpty () для определения, является ли кортеж элемент в None, примеры являются следующие:

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

Реализация указанного выше кода, выход:

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

Scala Вариант распространенный метод

В следующей таблице перечислены опции Scala часто используемые методы:

Нет. Метод и Описание
1

Защиту получаете:

Получить дополнительную ценность

2

Защиту IsEmpty: Boolean

Дополнительное значение типа обнаружения ли None, это так возвращает истину, иначе ложь

3

Защиту productArity: Int

Возвращает число элементов, A (x_1, ..., x_k) возвращает K

4

Защиту productElement (п: Int): Любой

Получает заданные параметры, начиная с нуля. А именно А (x_1, ..., x_k), вернуть X_ (п + 1), 0 <п <к.

5

Защиту существует (р: (А) => Boolean): Boolean

Если опция указана ли условия элемент существует и не Нет возвращает истину, в противном случае она возвращает ложь.

6

Защиту фильтр (р: (А) => Boolean): Опция [A]

Con Если параметр содержит значение, и передается фильтр возвращает истинный, фильтр возвращает некоторых случаях. В противном случае возвращается значение Нет.

7

Защиту filterNot (р: (А) => Boolean): Опция [A]

Con Если параметр содержит значение, и передается фильтр возвращает ложь, фильтр возвращает некоторых случаях. В противном случае возвращается значение Нет.

8

Защиту flatMap [B] (F: (A) => Опция [B]): Опция [B]

Если параметр имеет значение, а затем передается функции ф возвращается после лечения, в противном случае она возвращает None

9

Защиту Foreach [U] (F: (A) => U): Unit

Если параметр содержит значение, то каждое значение передается функции F, или не лечить.

10

Защиту getOrElse [B>: A] ( по умолчанию: => B): B

Если параметр имеет значение, то значение параметра возвращается, в противном случае установить значения по умолчанию.

11

Защиту isDefined: Boolean

Если факультативное значение является экземпляром Некоторые возвращает истину, в противном случае возвращает ложь.

12

Защиту итератора: Итератор [A]

Если параметр имеет значение, необязательное значение итерации. Если дополнительное значение пустое пустой итератора возвращается.

13

Защиту карту [B] (F: (A) => B): Опция [B]

Если параметр содержит значение, возвращаемое функцией ф Некоторые пост-обработки, в противном случае не возвращать None

14

Защиту OrElse [B>: A] (альтернативный вариант: => Опция [B]): Опция [B]

Если опция не является None, метод OrElse возвращает значение параметра по имени, в противном случае, она возвращает непосредственно к Option.

15

защиту orNull

Если опция содержит значения параметров возвращаемого значения, в противном случае вернуть NULL.

коллекции Scala коллекции Scala