在scala中实现函数的实现
我有一个函数在scala中实现函数的实现,scala,functional-programming,Scala,Functional Programming,我有一个函数 def foo[A](a1: A, a2: A): A = a1|+|a2 它需要实现 结果必须是: foo[Test](Test(1), Test(2)) // Test(3) 我在IDEA工作表中写了一些代码,但它不是编译的 case class Test(num: Int) object Test { implicit val test = new Writer[Test] { def write(v1: Test, v2: Test) = {
def foo[A](a1: A, a2: A): A = a1|+|a2
它需要实现
结果必须是:
foo[Test](Test(1), Test(2)) // Test(3)
我在IDEA工作表中写了一些代码,但它不是编译的
case class Test(num: Int)
object Test {
implicit val test = new Writer[Test] {
def write(v1: Test, v2: Test) = {
Test(v1.num + v2.num)
}
}
}
trait Writer[A] {
def write(v1: A, v2: A): A
}
implicit class someT[A](a1: A) {
def |+|(a2: A)(implicit writer: Writer[A]) = {
writer.write(a1, a2)
}
}
def foo[A](a1: A, a2: A): A = a1|+|a2
foo[Test](Test(1), Test(2))
输出错误为:
Error:(32, 34) could not find implicit value for parameter writer: A$A213.this.Writer[A]
def foo[A](a1: A, a2: A): A = a1|+|a2
^
Error:(32, 34) not enough arguments for method |+|: (implicit writer: A$A213.this.Writer[A])A.
Unspecified value parameter writer.
def foo[A](a1: A, a2: A): A = a1|+|a2
^
您缺少
foo
上所需的隐式Writer[A]
:
def foo[A](a1: A, a2: A)(implicit writer: Writer[A])
或者,如果您更喜欢上下文边界:
def foo[A : Writer](a1: A, a2: A)
现在,编译器可以依次看到+
的作用域中有一个编写器[a]