私はいくつかの関数を持っていますが、その唯一のパラメータ要件は、拡張可能なある種のコレクション (つまり、Queue、List、PriorityQueue など) を持つことです。そのため、次の型エイリアスを作成しようとしました。
type Frontier = Growable[Node] with TraversableLike[Node, Frontier]
次のような関数定義で使用します。
def apply(frontier: Frontier) = ???
しかし、型エイリアスは「フロンティア型を含む不正な循環参照」というエラーを返します。タイプエイリアスまたはそれに類似したものを使用するために、不正な循環参照を回避する方法はありますか?
1 つの解決策は、次を使用することです。
def apply[F <: Growable[Node] with TraversableLike[Node, F]](f: F) = ???
しかし、関数定義が型エイリアスとまったく同じことをしているように見える場合、これは不必要な冗長性を追加するようです。この型は他の場所でも使用されるため、型エイリアスを使用すると読みやすさが大幅に向上します。