2015-01-18 3 views
0

Say, есть случай, классКак сопоставить Вариант случай класса

case class MyCaseClass(a: Int, b: String) 

и Option[MyCaseClass] переменная

val myOption: Option[MyCaseClass] = someFunctionReturnOption() 

Теперь я хочу, чтобы отобразить эту переменную Option так:

myOption map { 
    case MyCaseClass(a, b) => do some thing 
} 

Кажется, компилятор сообщает об ошибке, как It needs Option[MyCaseClass], BUT I gave her MyCaseClass, bla bla... Как использовать совпадение шаблонов в классе «Необязательный случай»?

+2

Ваш код правильный. Ошибок компиляции не должно быть. – ZhekaKozlov

+0

Вы имеете в виду 'match'? Как сказал @orionll, с 'map' ваш код правильный. – sourcedelica

ответ

2

Рассмотрим извлекая Option значение, как это,

myOption map { 
    case Some(MyCaseClass(a, b)) => do some thing 
    case None => do something else 
} 

или же использовать collect для частичной функции, как этот

myOption collect { 
    case Some(MyCaseClass(a, b)) => do some thing 
} 

Update

Пожалуйста, обратите внимание, что, как заметил, код OP верен, этот ответ строго адресован последнему вопрос Как использовать совпадение шаблонов в факультативном классе?

0
MyOption match { 

    Some(class) => // do something 
    None => // do something. 

} 

Или

MyOption map (class =>//do something) 
Смежные вопросы