Scala分区一套

zax*_*xme 3 scala set partition

我正在研究如何根据第三组的内容将一组分成两组.我无意中偶然发现了这个解决方案:

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))
Run Code Online (Sandbox Code Playgroud)

签名partition如下:

def partition(p: A => Boolean): (Repr, Repr)
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释如何提供一个集合而不是一个函数吗?

提前致谢

Mar*_*rth 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
Run Code Online (Sandbox Code Playgroud)

如果您查看.apply文档,您会看到

def apply(elem:A):Boolean
测试此集合中是否包含某个元素.

此方法相当于包含.它允许将集合解释为谓词.