我查看了类型类场景的示例以及如何在scala中模仿这个Haskell-ish概念,例如在http://danielwestheide.com/blog/2013/02/06/the-neophytes-guide-to-scala-part-12-type-classes.html。我认为他们所涉及的内容太多,而且叙述性的负担也超出了他们的预期。您能否使用类型类而不是继承和mixins为多态性提供权威的 minimal 示例?
谢谢!
答案 0 :(得分:6)
// type class
trait Show[A] { def show(x: A): String }
// usage
def greet[A](x: A)(implicit sh: Show[A]) = s"Hello ${sh.show(x)}"
// example instance
implicit object ShowDouble extends Show[Double] {
def show(x: Double) = f"$x%1.3f" // format with three digits
}
greet(math.Pi) // "Hello 3.142"