2

我有两节课:

class X[A](implicit ord: Ordering[A]) // + other irrelevant parameters
class Y[A: Ordering] extends X[A]

给定一个Symbol对应于Y的隐式构造函数参数,我想找到它对应的父类隐式参数的符号(如果存在的话)。

val yOrdSym = ...
val yOrdType = yOrdSym.typeSignature
val xImplicitParams = 
  xSym.primaryConstructor.paramLists.flatten.
  filter(xParam => xParam.isImplicit && ???)

现在我需要过滤它以使其具有相同的类型(或超类型,但这对我的用例无关紧要)。我试过xParam.typeSignature =:= yOrdSym.typeSignature了,没有用。这是有道理的,因为类型参数有不同的所有者。但是,xParam.typeSignature =:= yOrdSym.typeSignatureIn(xSym.toType)也不xParam.typeSignatureIn(ySym.toType) =:= yOrdSym.typeSignature行。如何正确执行?

4

0 回答 0