Если бы я хотел сопоставить шаблон с базовым типом опции в Scala, я бы запустил что-то вроде
val opt = Option(5)
val lessThanTen = opt match {
case Some(e) => if (e < 10) true else false
case None => None
}
Но предположим, что opt приходит в результате одного из запросов Slick и, следовательно, имеет тип встраивания с поднятым краем Rep[Option[Int]]
. Как я могу выполнить тот же сопоставление с образцом таким образом, чтобы мы могли видеть внутреннюю часть повышенного типа? т.е. что-то вроде
val opt = Rep(Option(5))
val lessThanTen = opt match {
case Rep[Some(e)] => Rep[if (e < 10) true else false]
case Rep[None] => Rep[None]
}
Но, конечно, тот, который компилируется ;)