Где метод, который помещает AnyRef в Option? - PullRequest
3 голосов
/ 07 февраля 2011

В этом блоге Джеймса Ири он пишет:

Кроме того, в Scala есть метод "option", который переводит значение в Some (value) или None в зависимости ото том, является ли он нулевым или нет ...

Кажется, я не могу найти этот метод option где-нибудь в скаладоке.

Юлианский Драгос 's Клиентский проект gdata содержит метод, который, вероятно, имел в виду Джеймс.

def option[A <: AnyRef](a: A): Option[A] =
  if (a eq null) None else Some(a)

Укажите, где я могу найти этот метод в скаладоке.

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

def permutations(s: String): List[String] = ...

Я думаю о том, стоит ли изменить его на:

def permutations(s: Option[String]): List[String] = ...

, поскольку клиент может вызвать его с помощью null.В настоящее время, во-первых, я ожидаю, что параметр String и я устанавливаем его вручную, используя метод option, упомянутый ранее.

Ответы [ 2 ]

15 голосов
/ 07 февраля 2011

Вы можете просто использовать метод apply factory для объекта-компаньона:

scala> Option.apply("Test")                
res51: Option[java.lang.String] = Some(Test)

scala> Option.apply(null)  
res52: Option[Null] = None

... или более короткую версию:

scala> Option("Test")  
res49: Option[java.lang.String] = Some(Test)

scala> Option(null)
res50: Option[Null] = None
1 голос
/ 07 февраля 2011

Страница Scaladoc: http://www.scala -lang.org / api / current / scala / Option $ .html .

Чтобы перейти к нему с главной страницы параметров, нажмите на большую букву «С» в кружке рядом с именем класса в верхней части страницы. Это переключается между классом и компаньоном. Вы также можете перейти к компаньону, щелкнув «O» в левой панели слева от имени класса.

...