Скала шаблон соответствует и логически не - PullRequest
4 голосов
/ 21 мая 2019

у меня есть:

 x match { 
  case a: SomeType => doSomething()
  case _ => doSomethingElse()
 }

Есть ли способ проверить, что «a» НЕ относится к данному типу?

вроде так:

x match { 
  case !(a: SomeType) => doSomething()
  case _ => doSomethingElse()
}

Редактировать: Я согласен, что вопрос может быть не очень ясным, но мой интерес был в основном не логичным, и на него был дан ответ.

Ответы [ 2 ]

5 голосов
/ 21 мая 2019

Примерно так:

x match { 
  case a: if !a.isInstanceOf[MyFirst] => doSomething()
  case b: MySecond => doSomething()
  case _ => doSomethingElse()
}
4 голосов
/ 21 мая 2019

После вашего редактирования.То, что вам нужно, так же, как:

x match { 
  case a: SomeType => doSomethingElse()
  case _ => doSomething()
}
...