0

我有这个功能:

type CustomSet = Int => Boolean

如果我想创建交叉点,我会执行以下操作:

def intersection(s: CustomSet, t: CustomSet): CustomSet = {
        (x: Int) => contains(s, x) && contains(t, x)
  }

现在,我看不到任何方法来检查两组的交集是否为空......

我尝试了很多方法:

- if (intersection(s, t) == CustomSet())

- if (intersection(s, t) == None)

等等,但它不工作......

你能告诉我我在这个检查中哪里错了吗?

4

1 回答 1

2

只需将所有评论放在一起:

的结果intersection只是一个函数。您可以比较两个函数的引用相等性,即它们是否是同一个函数。

没有办法测试两个函数是否针对所有可能的参数(和系统状态)返回相同的结果(并且具有相同的副作用),因此您所能做的就是定义您关心的输入参数范围并比较结果具有所有有趣输入参数的所有结果的两个函数。

所以在你的情况下,你可以做类似的事情

(-1000 to 1000).forall(!intersection(s,t)(_))

这将测试从 -1000 到 1000 的所有数字是否不在和的s交集t

于 2012-10-02T04:46:48.593 回答