我无法理解如何创建以下代码的实现:
Ad-hoc polymorphism
The third approach in Scala is to provide an implicit conversion or implicit
parameters for the trait.
scala> trait Plus[A] {
def plus(a1: A, a2: A): A
}
defined trait Plus
scala> def plus[A: Plus](a1: A, a2: A): A = implicitly[Plus[A]].plus(a1, a2)
plus: [A](a1: A, a2: A)(implicit evidence$1: Plus[A])A
Run Code Online (Sandbox Code Playgroud)
如何创建具体实现,例如添加字符串或整数?
像这样?
scala> implicit object StringPlus extends Plus[String] {
| def plus(a1: String, a2: String) = a1+a2
| }
defined module StringPlus
scala> plus("asd", "zxc")
res1: String = asdzxc
Run Code Online (Sandbox Code Playgroud)