2009-12-03 19 views

Odpowiedz

9

Zwraca wartość null, ponieważ jest płytkim interfejsem w bibliotece Java. Myślę, że to też jest do bani i zostałem przez niego ukąszony.

Jeśli otrzymasz wartość, która może być pusta, możesz napisać Option(value) na Scala 2.8 i stanie się ona albo None lub Some(value). Że nie działa z dopasowywania wzorców, ale można napisać własny wyciąg dla że:

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

Przykłady:

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

zawsze zapomnij sprawdzić te definicje obiektów :) Wzór dopasowanie przykładem jest dość ciekawy. –

+0

Tylko jedna uwaga: 'Opcja (wartość)' działa tylko w Scala 2.8. Nie 2.7.x –

+0

To prawda. Byłem kiedyś lepszy w tagowaniu 2.8 rzeczy jako takich. –

Powiązane problemy