私は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
ません。正しく行う方法は?