我试图以功能方式编写此函数的正文:
grouping[T](xs: List[T], rule: T => Boolean): Tuple2[List[T], List[T]]
为了像这样使用它:
println(grouping(List(1, 2, 100, 3, 4, 501, 12), (x: Int) => x >= 100))
println(grouping(List('A', 'C', 'Z', 'T', 'O', 'P', 'N', 'M', 'Y'), (x:
Char) => x >= 'J'))
并获得:
(List(100, 501), List(1, 2, 3, 4, 12))
(List(Z, T, O, P, N, M, Y),List(A, C))
答案 0 :(得分:1)
List
提供了partition
方法,它就是这样做的:
List(1, 2, 100, 3, 4, 501, 12).partition(_ >= 100)
并返回:
(List(100, 501), List(1, 2, 3, 4, 12))
def partition(p:(T)=>布尔):( List [T],List [T])
根据谓词将此可遍历集合分区为两个可遍历集合。 partition(p:(T)=> Boolean):( List [T],List [T]) 根据谓词将这个可遍历集合划分为两个可遍历集合。
我们可以将它封装在一个函数中,该函数在输入中使用谓词:
def grouping[T](xs: List[T], rule: T => Boolean): (List[T], List[T]) = {
xs.partition(rule)
}
以这种方式应用它:
grouping(List(1, 2, 100, 3, 4, 501, 12), (i: Int) => i >= 100)
grouping(List('A', 'C', 'Z', 'T', 'O', 'P', 'N', 'M', 'Y'), (x: Char) => x >= 'J')