我想对x-y网格中的坐标对元素做集合运算。
例如,{(0,0),(1,4),(1,5),(2,3)}
与{(2,3),(1,4),(2,6)}
的并集= {(0,0),(1,4),(1,5),(2,3),(2,6)}
不幸的是,我无法找到将元组插入Swift的Set命令的方法,因为它说它们不符合“hashable”协议。
错误:类型“(Int,Int)”不符合协议“Hashable”
我相信我已经找到了一个解决方法,但它涉及到大量的代码。有没有一个简单的方法可以让我在开始工作之前就错过呢?
3条答案
按热度按时间0ejtzxu11#
不要使用元组来表示点,而是使用内置的类型
CGPoint
。您可以通过扩展CGPoint
来将其扩展为可哈希的:既然CGPoint是可哈希的,你就可以在集合中使用它了。例如:
u59ebvdq2#
您可以将
struct
设置为Hashable
类型:现在您已经有了一个可散列元组,可以使用常规的
Set
操作:lb3vh1jj3#
给你:
而这就是联盟的结果: