2009-12-03 5 views

답변

9

Java 라이브러리에 대한 얕은 인터페이스이므로 null을 반환합니다. 나는 그것이 빤다라고 생각한다. 그리고 나는 그것에 의해 물렸다.

값이 null 일 수있는 경우 Option(value)을 스칼라 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

하나의 노트 만 : 옵션 (값)은 스칼라 2.8에서만 작동합니다. 아니 2.7.x –

+0

사실. 나는 2.8 물건에 태그를 붙이는 것이 좋았다. –

관련 문제