У меня два кейса
case class StringCaseClass(argument: String)
case class IntCaseClass(argument: Int)
Я хочу определить структурный тип, который будет соответствовать сопутствующему объекту обоих этих
type HasApply1 {
def apply[A, R](argument: A): R
}
Это будет хорошо скомпилировано, но когда я попытаюсь использовать его вот так
def method(caseClass: HasApply1) {
// whatever
}
method(StringCaseClass)
Я получу ошибку компилятора
found : StringCaseClass.type
required: WithApply1
(which expands to) AnyRef{def apply[A, R](string: A): R}
Есть ли способ добиться этого? Если я переопределю структурный тип, чтобы иметь конкретные типы для A и R, он будет правильно компилироваться, но тогда я потеряю гибкость
def method[A](caseClass: HasApply1, a: A) = caseClass.apply(a)
- person shinyhappydan   schedule 24.03.2013