Как уже указывалось Easy Angel , используйте неявное преобразование:
implicit def listTorichList[A](input: List[A]) = new RichList(input)
class RichList[A](val source: List[A]) {
def partitionCount(p: A => Boolean): (Int, Int) = {
val partitions = source partition(p)
(partitions._1.size, partitions._2.size)
}
}
Также обратите внимание, что вы можете легко определить partitionCount
в терминах partinion
. Тогда вы можете просто использовать:
val list = List(1, 2, 3, 5, 7, 11)
val (odd, even) = list partitionCount {_ % 2 != 0}
Если вам интересно, как это работает, просто удалите ключевое слово implicit
и явно вызовите преобразование list2richList
(это то, что компилятор делает для вас прозрачно, когда используется implicit
).
val (odd, even) = list2richList(list) partitionCount {_ % 2 != 0}