我在尝试抽象类时偶然发现了这个问题。以下代码:
import shapeless._
class A
[tuple <: Product, hlist <: HList]
(tuple: tuple)
(implicit tupleGeneric: Generic.Aux[tuple, hlist])
{
private val hlist = tupleGeneric.to(tuple)
println(hlist)
}
new A((1, 'b')) {}
编译失败并显示以下消息:
could not find implicit value for parameter tupleGeneric: shapeless.Generic.Aux[(Int, Char),shapeless.::[Int,shapeless.::[Char,shapeless.HNil]]]
new A((1, 'b')) {}
^
但是,如果我只是从
{}
中删除 new A((1, 'b')) {}
部分,它会发现它没有问题。这是 Scala 错误还是我遗漏了什么?
最佳答案
原来这是一个公认的错误。
https://issues.scala-lang.org/browse/SI-8104
关于scala - 为什么类体会影响隐式解析?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20805545/