2017-12-06 27 views
1

Scalaの実存タイプ

class SomeClass extends ChildClass[F, SomeClass, SomeOtherClass] 
abstract class ChildClass[B, C <: ChildClass[B, C, D], D <: OtherChildClass[B, D]] extends ParentClass[B, C, D] 

そしてそのサブクラスは、このようにそれを拡張するサブクラスを持っていますParentClassのジェネリック医薬品の取り扱いについてはどうすればよいですか?例えば、私は同じ祖先タイプParentClassを共有するオブジェクトのArrayを作成したい場合、私はこれを行うことができます:

getArrayOfParentClass(): Array[ParentClass[_, _, _]] 

しかし、これは、クラス定義で提案されているタイプの境界を尊重していません。
F-Bounded Polymorphic型の主な解決策の1つが実存型であるようですが、このケースを扱う実在型を使用して解決策を見つけ出すことはできませんし、実存型1つ以上の型パラメータを持つクラスを使用します。私はそれがこのような何かを仕事と想像しますが、かなりそれを把握することができていない:

// Doesn't compile 
getArrayOfParentClass(): Array[X forSome {type X <: ParentClass[A, X, M forSome {type M <: OtherClass[A, M]}] 

答えて

0

したい構文が

Array[X forSome { type X <: ParentClass[A, X, M]; type M <: OtherClass[A, M] }] 
です