我有这个功能:
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)
等,但它不起作用......
你可以告诉我这次检查错在哪里吗?
答案 0 :(得分:2)
将所有评论放在一起:
intersection
的结果只是一个功能。您可以比较两个参考相等的函数,即它们是否是同一个函数。
无法测试两个函数是否为所有可能的参数(和系统状态)返回相同的结果(并且具有相同的副作用),因此您所能做的就是定义一系列您关心的输入参数和将两个函数的结果与所有有趣的输入参数的所有结果进行比较。
因此,在您的情况下,您可以执行类似
的操作(-1000 to 1000).forall(!intersection(s,t)(_))
将测试-1000到1000之间的所有数字是否不在s
和t
的交叉点