21

コレクション API における Scala のさまざまな "Like" 特性を理解するのを手伝ってくれませんか。私は何度も読んで、運が悪いのでそれぞれを比較しようとしました。たとえば、Map は MapLike を拡張し、2 つの具象メソッドを追加していることがわかると思います。しかし、これは、なぜこれを行うのかという疑問を投げかけます。Map と MapLike の代わりに、コレクション API に 1 つの Map 特性を持たないのはなぜですか?

ありがとうございました!

4

1 に答える 1

17

これらの詳細の最良の情報源は、Martin Odersky と Lex Spoon の「What's New in Scala 2.8: The Architecture of Scala Collections」です。

Scala コレクション ライブラリは、コードの重複を回避し、一般的なビルダーと、いわゆる実装特性のコレクションに対するトラバーサルを使用することで、「同じ結果型」の原則を実現します。これらの特性にはLike接尾辞が付いています。たとえば、IndexedSeqLikeは の実装特性でIndexedSeqあり、同様に TraversableLikeは の実装特性ですTraversableTraversableまたはなどのコレクション クラスIndexedSeqは、これらのトレイトから具象メソッドの実装をすべて継承します。実装の特性には、通常のコレクションの 1 つではなく、2 つの型パラメーターがあります。コレクションの要素型だけでなく、コレクションの表現型もパラメータ化し ますSeq[I]、またはList[T]...などの基になるコレクションの型

独自のコレクション クラスを Collections API と統合する場合、またはライブラリのしくみをより深く理解したい場合は、この記事全体が非常に役立ちます。

于 2012-07-12T02:46:31.880 に答える