Руководство по Scala. Коллекции. Опции.

В данной статье мы рассмотрим Options в языке Scala. Опция  – это коллекция элементов заданного типа.

Для создания Option используется запись следующего вида:


def findDeveloper(key: String): Option[Developer];

Данный метод вернёт Some[Developer] если запись будет найдена в указанной коллекции, либо None – если нет.

Для понимания того, как это работает на практике рассмотрим простой пример:


package net.proselyte.scalatutorial.collections

/**
  * Simple Scala class that demonstrates Options in Scala.
  *
  * @author Eugene Suleimanov
  */
object OptionDemo {
  def main(args: Array[String]) {
    val developers = Map("Eugene Suleimanov" -> "Java/Scala Developer", "Ivan Ivanov" -> "C++ Developer");

    println("developers: " + developers);

    println("developers.get(\"Eugene Suleimanov\"): " + developers.get("Eugene Suleimanov"));
    println("developers.get(\"Ivan Ivanov\"): " + developers.get("Eugene Suleimanov"));
    println("developers.get(\"Kolya Nikolaev\"): " + developers.get("Kolya Nikolaev"));


    println();
    println("Using method showDevelopers...");

    println("showDevelopers(developers.get(\"Eugene Suleimanov\")): " + showDevelopers(developers.get("Eugene Suleimanov")));
    println("showDevelopers(developers.get(\"Ivan Ivanov\")): " + showDevelopers(developers.get("Ivan Ivanov")));
    println("showDevelopers(developers.get(\"Kolya Nikolaev\")): " + showDevelopers(developers.get("Kolya Nikolaev")));
  }

  def showDevelopers(x: Option[String]) = x match {
    case Some(some)=> some;
    case None => "Developer with this name not found";
  }
}

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


developers: Map(Eugene Suleimanov -> Java/Scala Developer, Ivan Ivanov -> C++ Developer)
developers.get("Eugene Suleimanov"): Some(Java/Scala Developer)
developers.get("Ivan Ivanov"): Some(Java/Scala Developer)
developers.get("Kolya Nikolaev"): None

Using method showDevelopers...
showDevelopers(developers.get("Eugene Suleimanov")): Java/Scala Developer
showDevelopers(developers.get("Ivan Ivanov")): C++ Developer
showDevelopers(developers.get("Kolya Nikolaev")): Developer with this name not found

Process finished with exit code 0

На этом мы заканчиваем изучение Option в Scala.