Tag: 丰富我的图书馆

如何将丰富我的库模式应用到Scala集合?

Scala中最强大的模式之一是丰富我的库*模式,它使用隐式转换, 似乎添加方法到现有的类,而无需dynamic的方法parsing。 例如,如果我们希望所有的string都有方法spaces来计算它们有多less个空格字符,我们可以: 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 不幸的是,这种模式在处理generics集合时遇到了麻烦。 例如,一些问题已经被问及关于按顺序对集合进行分组的问题。 没有什么内置的工作在一个镜头,所以这似乎是一个理想的候选人丰富我图书馆模式使用generics集合C和通用元素typesA : 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 = ca.head […]