将AnyRef装入选项的方法在哪里?

时间:2011-02-07 05:55:29

标签: scala scala-option

在这篇blogpost by James Iry中,他写道:

  

另外,Scala有一个“选项”方法,可以将值提升为Some(value)或None,具体取决于它是否为null ...

我似乎无法在scaladoc中找到这个option方法。

Iulian Dragos的gdata客户端项目包含的方法可能就是詹姆斯所指的方法。

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

请指出我在哪里可以在scaladoc中找到此方法。

P.S。我有一个看起来像这样的方法:

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

我是否应该将其更改为:

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

因为客户端可以使用null调用它。目前在第一个实例中,我期望一个String参数&amp;我使用前面提到的option方法手动将其打包。

2 个答案:

答案 0 :(得分:15)

您可以在其配套对象上使用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 :(得分:1)

Scaladoc页面为http://www.scala-lang.org/api/current/scala/Option$.html

要从主选项页面导航到它,请单击页面顶部类名旁边的圆圈中的大“C”。这会在班级和同伴之间切换。您还可以通过单击类名左侧左侧导航栏中的“O”导航到随播广告。