馬丁·奧德斯基給出了這樣的例子,以分割出的陣列分成2個集合:分裂出3個或更多陣列Scala中
val people: Array[Person]
val (minors, adults) = people partition (_.age < 18)
class Person(val name: String, val age: Int)
什麼是拆分到3個或更多個陣列的最佳方式:
val(未成年人,成年人,老年人)=人分區x < 18,18 < x < 65,x> 65 //?
這是我更容易推理的一般多分區作爲應用相互排斥的過濾功能,可以實現'一個集合(F < - FS)產量xs.filter(f)'。它的速度比較慢,因爲對於每個過濾器fs都會過濾收集的xs。 – Brian 2012-07-10 04:35:03
@Brian如果條件重疊,那麼它的工作方式與上述不同。我的實現將元素添加到滿足條件的第一個存儲桶中。它應該如何工作是有爭議的,但我選擇這種方式是因爲對我來說,「分區」表明一組元素分裂而不是重複。它的優點是,你可以很容易地擁有一個「其他所有」的身份桶,而不是定義一個額外的功能作爲所有其他功能的否定。 – 2012-07-10 05:01:31
同意。這就是爲什麼我注意到過濾器必須互相排斥或者有重疊。 – Brian 2012-07-10 05:04:45