2009-12-03 21 views

答えて

9

Javaライブラリよりも浅いインタフェースなので、nullを返します。私はそれも吸うと思うし、私はそれに噛まれている。

値がNULLの場合、Option(value)をScala 2.8に書くことができ、NoneまたはSome(value)になります。これは、パターンマッチングでは動作しませんが、そのために独自の抽出を書き込むことができます。

object Optional { 
    def unapply[T](a: T) = if (null == a) Some(None) else Some(Some(a)) 
} 

例:

scala> val a:String = null 
a: String = null 

scala> a match { 
    | case Optional(None) => println("Got none") 
    | case Optional(Some(value)) => println("Got "+value) 
    | } 
Got none 

scala> val a = "string" 
a: java.lang.String = string 

scala> a match { 
    | case Optional(None) => println("Got none") 
    | case Optional(Some(value)) => println("Got "+value) 
    | } 
Got string 

scala> val a = "5" 
a: java.lang.String = 5 

scala> a match { 
    | case Optional(None) => println("Got none") 
    | case Optional(Some(value)) => println("Got "+value.toInt) 
    | } 
Got 5 
+0

私は常にそれらのオブジェクト定義をチェックすることを忘れ:)例をパターンマッチングはかなりあります面白い。 –

+0

「Option(value)」はスカラ2.8でのみ動作します。 2.7.x –

+0

本当に十分です。私は2.8のものをそのようなものとしてタグ付けするのが良かった。 –

関連する問題