如何使用scala-reflect查找父隐式参数?

时间:2016-03-04 12:00:26

标签: scala scala-reflect

我有两个班级:

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也不起作用。如何正确地做到这一点?

0 个答案:

没有答案