Как установить границы типа AnyRef, чтобы сделать его только классом случая

Предположим, что у меня есть несколько случаев

case class Foo(i: Int)
case class Bar(s: String)

Я хочу определить некоторые функции, которые принимают A: AnyRef в качестве параметра. Но! Я хочу установить границы с:

  1. A - AnyRef, но не Объект
  2. A - AnyRef, но только класс case

что-то вроде того

def caseClassProcessor [A] (A: AnyRef <: некоторые границы) =???

def notObjectProcessor [A] (A: AnyRef! Object) =???

это возможно каким-либо образом?

0 ответов

Возможно, вам нужен этот пример:

case class Foo(int: Int)
case class Bar(string: String)

def foo[A](arg: A) = arg match {
  case Foo(int)    => ...
  case Bar(string) => ...
  case _           => ...
}
Другие вопросы по тегам