タグ付けされた質問 「enrich-my-library」

3
ライブラリーの充実パターンをScalaコレクションに適用するにはどうすればよいですか?
Scalaで利用できる最も強力なパターンの1つは、enrich-my-library *パターンです。これは、暗黙の変換を使用して、動的メソッド解決を必要とせずに既存のクラスにメソッドを追加するように見えます。たとえば、すべての文字列に、spaces空白文字の数をカウントするメソッドが必要な場合、次のことができます。 class SpaceCounter(s: String) { def spaces = s.count(_.isWhitespace) } implicit def string_counts_spaces(s: String) = new SpaceCounter(s) scala> "How many spaces do I have?".spaces res1: Int = 5 残念ながら、このパターンはジェネリックコレクションを処理するときに問題に遭遇します。たとえば、コレクションでアイテムを順番にグループ化することについて、多くの質問がされています。ワンショットで機能するビルトインは何もないので、これは、ジェネリックコレクションCとジェネリックエレメントタイプを使用したrich-my-libraryパターンの理想的な候補のようですA。 class SequentiallyGroupingCollection[A, C[A] <: Seq[A]](ca: C[A]) { def groupIdentical: C[C[A]] = { if (ca.isEmpty) C.empty[C[A]] else { val first = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.