【问题标题】:Scala partition a setScala 对集合进行分区
【发布时间】:2016-07-16 23:18:09
【问题描述】:

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

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)

有人可以向我解释提供集合而不是函数的工作原理吗?

提前致谢

【问题讨论】:

    标签: scala set partition


    【解决方案1】:

    一组s: Set[A] 一个函数A => Boolean:对于A 的任何值a,您返回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,您会看到

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

    这个方法相当于contains。它允许集合 解释为谓词。

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 2015-08-23
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 2010-12-03
      相关资源
      最近更新 更多