Скажем, у меня есть что-то вроде этого:
obj match {
case objTypeOne : TypeOne => Some(objTypeOne)
case objTypeTwo : TypeTwo => Some(objTypeTwo)
case _ => None
}
Теперь я хочу обобщить, передать один из типов для соответствия:
obj match {
case objTypeOne : clazz => Some(objTypeOne)
case objTypeTwo : TypeTwo => Some(objTypeTwo)
case _ => None
}
Но это не разрешеноЯ думаю, что по синтаксическим, а не по семантическим причинам (хотя я также предполагаю, что, хотя clazz - это Class [C], тип стирается, и поэтому тип Option будет утерян).с:
if(clazzOne.isAssignableFrom(obj.getClass)) Some(clazz.cast(obj))
if(obj.isInstanceOf[TypeTwo]) Some(obj.asInstanceOf[TypeTwo])
None
Мне просто интересно, есть ли более хороший путь.