nicht wirklich möglich, wie Sie es nennen, aber Sie können es tun, um die Typklasse Muster. Zum Beispiel von 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)
^
EDIT
Dies funktioniert, wenn Klasse und Objekt sind Begleiter. Wenn Sie bei REPL auf eine andere Zeile tippen (dh ein "Ergebnis" zwischen ihnen erscheint), sind sie keine Begleitpersonen. Sie können es wie unten geben, aber:
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
Danke, verweisen auch http://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf – oluies
@Brent Wie ich per E-Mail gesagt habe, ist dies wahrscheinlich ein Ergebnis der Eingabe der Klasse ein Objekt in verschiedenen Zeilen. Siehe meine Bearbeitung. –