3

James Iry 的这篇博文中,他写道:

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

option我似乎在 scaladoc 的任何地方都找不到这种方法。

Iulian Dragos的 gdata 客户端项目包含一个可能是 James 所指的方法。

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

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

PS我有一个看起来像这样的方法:

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

对于是否应该将其更改为,我有两种想法:

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

因为客户端可以使用null. 目前,在第一个实例中,我希望有一个字符串参数,并且我使用option前面提到的方法手动将其装箱。

4

2 回答 2

15

您可以简单地在其伴随对象上使用 apply 工厂方法:

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
于 2011-02-07T06:12:25.417 回答
1

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

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

于 2011-02-07T13:36:51.550 回答