13

API を作成しようとして、2.8(.0-beta1) の Scala のコレクションに苦労しています。

基本的に私が必要とするのは、次のようなものを書くことです:

  • 特定のタイプの不変セットに機能を追加します
  • ここで、filter や map などのすべてのメソッドは、すべてをオーバーライドすることなく同じ型のコレクションを返します (これが、最初に 2.8 を選択した理由です)。
  • これらのメソッドを通じて取得するすべてのコレクションは、元のコレクションが持っていたのと同じパラメーターで構築されます (SortedSet が暗黙的に順序付けを処理する方法と同様)。
  • これは、セットの実装とは関係なく、それ自体がトレイトです。

さらに、たとえば HashSet に基づいて、デフォルトの実装を定義したいと考えています。トレイトのコンパニオン オブジェクトは、このデフォルトの実装を使用する場合があります。コレクション型を他のコレクション型にマップするためにビルダー ファクトリの全機能が必要かどうかはまだわかりません。

コレクション API の再設計に関する論文を読みましたが、それ以降少し変わったようで、詳細が欠けています。コレクションのソース コードも調べましたが、まだ一貫性があるかどうかはわかりません。

理想的には、必要な部分だけをステップバイステップで教えてくれる実践的なチュートリアルか、必要な部分を自分で判断できるようにすべての詳細の広範な説明のいずれかが欲しい. "Programming in Scala" のオブジェクトの等価性に関する章が気に入りました。:-)
しかし、新しいコレクションの設計をよりよく理解するのに役立つドキュメントや例へのポインタをいただければ幸いです。

4

1 に答える 1

17

collection.immutable.BitSet の実装を見てみたいと思います。collection.BitSetLike および collection.generic.BitSetFactory からのものを再利用して、少し広がっています。しかし、それはまさにあなたが指定したことを行います: 新しい機能を追加する特定の要素タイプの不変セットを実装します。

于 2010-03-29T10:00:13.043 に答える