No
realmente posible como usted dice, pero puede hacerlo utilizando el patrón de clase de tipo. Por ejemplo, desde here:
sealed abstract class Acceptable[T]
object Acceptable {
implicit object IntOk extends Acceptable[Int]
implicit object LongOk extends Acceptable[Long]
}
def f[T: Acceptable](t: T) = t
scala> f(1)
res0: Int = 1
scala> f(1L)
res1: Long = 1
scala> f(1.0)
<console>:8: error: could not find implicit value for parameter ev: Acceptable[Double]
f(1.0)
^
EDITAR
Esto funciona si la clase y el objeto son compañeros. En REPL, si escribe cada uno en una línea diferente (es decir, aparece un "resultado" entre ellos), no son compañeros. Puede escribir que, como a continuación, sin embargo:
scala> sealed abstract class Acceptable[T]; object Acceptable {
| implicit object IntOk extends Acceptable[Int]
| implicit object LongOk extends Acceptable[Long]
| }
defined class Acceptable
defined module Acceptable
Gracias, también la referencia http://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf – oluies
@Brent Como dije por correo electrónico, esto es probablemente el resultado de escribir la clase de un objeto en diferentes líneas. Ver mi edición –