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
zawsze zapomnij sprawdzić te definicje obiektów :) Wzór dopasowanie przykładem jest dość ciekawy. –
Tylko jedna uwaga: 'Opcja (wartość)' działa tylko w Scala 2.8. Nie 2.7.x –
To prawda. Byłem kiedyś lepszy w tagowaniu 2.8 rzeczy jako takich. –