我正在参加Coursera上的Scala函数式编程课程,现在是第二周,但我遇到了问题。我们正在处理集合(Set),但这跟Java中常见的那种Set不一样。它是一个函数,如果值存在于集合中,则返回true,否则返回false。他们说它不是一个容器,而只是一个函数。
为了更好地理解,我需要您的帮助。我不想让您帮我解决作业,只是想通过例子来理解应该做什么。
这是代码。在singletonSet中,我猜解决方法是返回Set(elem),对吗?
如果可以,请问我该如何使两者之间进行并集操作?虽然我不是编程新手,但我无法看到任何方法来完成它。因为我不应该返回数字的“set”。
另一个学生告诉我关于集合的内容:“但是,所有“Set”都是将Int作为输入并返回布尔值(Int => Boolean)的函数。任何将Int作为输入并返回布尔值的函数都适用于类型'Set'。”
在并集函数中,我尝试了类似以下的方法:
为了更好地理解,我需要您的帮助。我不想让您帮我解决作业,只是想通过例子来理解应该做什么。
/**
* 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),对吗?
如果可以,请问我该如何使两者之间进行并集操作?虽然我不是编程新手,但我无法看到任何方法来完成它。因为我不应该返回数字的“set”。
另一个学生告诉我关于集合的内容:“但是,所有“Set”都是将Int作为输入并返回布尔值(Int => Boolean)的函数。任何将Int作为输入并返回布尔值的函数都适用于类型'Set'。”
在并集函数中,我尝试了类似以下的方法:
def union(s: Set, t: Set): Set = (s | t) //value | not a member of Int => Boolean
非常感谢您的帮助 :)