我有一个非常简单的集合 s1 {1, 2} 示例,我想在其上应用谓词 p > 1。现在我已经实现了这个功能,它给了我正确的结果。
def filter(s: Set, p: Int => Boolean): Set = {(i: Int) => s(i) && p(i)}
集合的定义在哪里
type Set = Int => Boolean
但是在 Scala 中有没有更优雅的方法呢?
我有一个非常简单的集合 s1 {1, 2} 示例,我想在其上应用谓词 p > 1。现在我已经实现了这个功能,它给了我正确的结果。
def filter(s: Set, p: Int => Boolean): Set = {(i: Int) => s(i) && p(i)}
集合的定义在哪里
type Set = Int => Boolean
但是在 Scala 中有没有更优雅的方法呢?
使用本课程对 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 实现。