2015-09-29 1 views
0

Так что я получил кучу тематических классов, которые принимают на этот формат:Конкретно сопоставление опций одного типа другому, если он существует?

case class A(value: String) 
case class B(value: String) 
case class C(value: String) 

Я везу в нескольких опциональных [String] значений в качестве параметров функции, и я хочу, чтобы создать вариант [A] , Option [B], если значения из параметров не равны None.

В настоящее время я делаю это так:

val first = parameterOptional match { 
    case Some(theStringValue) => Some(A)) 
    case None => None 
} 

И это работает, но я хотел бы знать, если есть более consise способ сделать это, я новичок в Scala.

Переменные имена в примерах, очевидно, были изменены.

Благодаря

ответ

5

, как я понимаю, вы хотите, чтобы обернуть дополнительный параметр в один из классов дела? Тогда вы можете просто использовать карту:

scala> case class C(value: String) 
defined class C 

scala> val optionalParam: Option[String] = Some("zzz") 
optionalParam: Option[String] = Some(zzz) 

scala> optionalParam.map(C) 
res0: Option[C] = Some(C(zzz)) 

scala> val optionalParam: Option[String] = None 
optionalParam: Option[String] = None 

scala> optionalParam.map(C) 
res1: Option[C] = None 
+0

Отлично, спасибо! –

Смежные вопросы