Questions tagged «enrich-my-library»

3
如何将“丰富我的图书馆”模式应用于Scala集合?
Scala中可用的最强大的模式之一是rich-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和通用元素类型的“丰富我的图书馆”模式的理想选择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 = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.