2016-03-29 126 views
3

我在看如何根據第三組的內容拆分兩組中的一組。一不留神我偶然發現了這個解決方案:斯卡拉分區一組

val s = Set(1,2,3) 
val s2 = Set(4,5,6) 
val s3 = s ++ s2 

s3.partition(s) 
res0: (scala.collection.immutable.Set[Int],scala.collection.immutable.Set[Int]) = (Set(1, 2, 3),Set(5, 6, 4)) 

partition簽名如下:

def partition(p: A => Boolean): (Repr, Repr) 

提供瞭如何設置的,而不是一個函數的工作有人能解釋一下嗎?

在此先感謝

回答

6

一組s: Set[A]功能A => Boolean:任何價值的Aa返回s是否包含a與否。

scala> val f: Int => Boolean = Set(1,2,3) 
f: Int => Boolean = Set(1, 2, 3) 

scala> f(1) 
res0: Boolean = true 

scala> f(4) 
res1: Boolean = false 

如果你看一個的documentation for .apply,你會看到

高清申請(ELEM:A):布爾
如果 測試一些元素包含在這一套。

此方法等同於包含。它允許設置爲 解釋爲謂詞。