我正在学习 Scala 课程的 Coursera 函数式编程。这是第二周,我碰壁了。在作业中,我们使用的是 Set,但不是我们在 Java 中遇到的那种 Set,例如。它是一个 Set,如果值在那里,则返回 true,否则返回 false。他们说它不是一个容器,它只是一个函数。
为了弄清楚,我需要你的帮助。我不想让你解决我的任务,这只是一个例子,我想知道我应该做什么。
/**
* We represent a set by its characteristic function, i.e.
* its `contains` predicate.
*/
type Set = Int => Boolean
/**
* Indicates whether a set contains a given element.
*/
def contains(s: Set, elem: Int): Boolean = s(elem)
/**
* Returns the set of the one given element.
*/
def singletonSet(elem: Int): Set = Set(elem)
/**
* Returns the union of the two given sets,
* the sets of all elements that are in either `s` or `t`.
*/
def union(s: Set, t: Set): Set = ???
这是代码。在singletonSet
我想解决它的方法是返回Set(elem)
,对吗?
如果这很好,我应该如何在两者之间建立联盟?我对编程并不陌生,但我看不到任何方法。因为我不应该返回一组数字。
这是另一个学生告诉我的关于集合的内容:“但是所有的“集合”都是一个接受一个 Int 并返回一个布尔值 (Int => Boolean) 的函数。任何接受一个 Int 并返回一个布尔值的函数都适合类型'设置'。 ”
我在 union 函数中尝试的是:
def union(s: Set, t: Set): Set = (s | t) //value | not a member of Int => Boolean
任何帮助,将不胜感激 :)