3

James Iry によるこのブログ投稿で、彼は次のように書いています。

さらに、Scala には、null かどうかに応じて、値を Some(value) または None に昇格させる「オプション」メソッドがあります ...

optionscaladoc のどこにもこのメソッドが見つからないようです。

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] = ...

私はそれを次のように変更する必要があるかどうかについて 2 つの考えがあります。

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

クライアントは で呼び出すことができるためnullです。現在、最初のインスタンスでは、文字列パラメーターが必要であり、option前述の方法を使用して手動でボックス化しています。

4

2 に答える 2

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
于 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 に答える