2

私は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