0

我有一个非常简单的集合 s1 {1, 2} 示例,我想在其上应用谓词 p > 1。现在我已经实现了这个功能,它给了我正确的结果。

  def filter(s: Set, p: Int => Boolean): Set = {(i: Int) => s(i) && p(i)}

集合的定义在哪里

  type Set = Int => Boolean

但是在 Scala 中有没有更优雅的方法呢?

4

1 回答 1

5

使用本课程对 a 的定义Set,您的答案非常优雅。

由于谓词实际上Set也是 a,因此通过重用该函数filter可以更简洁:intersect

/**
 * Returns the intersection of the two given sets,
 * the set of all elements that are both in `s` and `t`.
 */
def intersect(s: Set, t: Set): Set = ???

/**
 * Returns the subset of `s` for which `p` holds.
 */
def filter(s: Set, p: Int => Boolean): Set = intersect(s, p)

因为Coursera Honor Code阻止共享作业答案,所以我忽略了 intersect 实现。

于 2013-10-06T21:07:53.373 回答