在Swift中创建数组
发布时间:2020-12-14 05:38:44 所属栏目:百科 来源:网络整理
导读:我试图创建一个数组的集合,使元素独特. 我认为使用Set初始化程序来完成这项工作将是一种优雅的方法.所以我创建了一个数组并尝试使用该数组初始化我的新集. 但是编译器在抱怨.我尝试使用Integer值,它就像一个魅力.但是对于我自己的课程,它不起作用.我还认为Eq
我试图创建一个数组的集合,使元素独特.
我认为使用Set初始化程序来完成这项工作将是一种优雅的方法.所以我创建了一个数组并尝试使用该数组初始化我的新集. 但是编译器在抱怨.我尝试使用Integer值,它就像一个魅力.但是对于我自己的课程,它不起作用.我还认为Equitable Protocol是正确的方法……但正如你所看到的,它并没有解决我的问题. 考虑以下游乐场: import UIKit internal struct Object: Equatable { var a: Int } internal func == (lhs:Object,rhs: Object) -> Bool { return lhs.a == rhs.a } let array = [Object(a:1),Object(a:1),Object(a:2)] let set = Set(array) // ERROR 编译器抱怨
我需要实施哪个协议才能使工作正常进行?
如果你’命令 – 单击’在Xcode中设置’,它会转到Set类型的定义.你去了:
/// A collection of unique `Element` instances with no defined ordering. public struct Set<Element : Hashable> : Hashable,CollectionType ... 如Rob所述,元素需要确认为Hashable(这又需要Equatable). 调整代码: import Foundation internal struct Object: Hashable { var a: Int var hashValue: Int { return a.hash } } internal func == (lhs:Object,Object(a:2)] let set = Set(array) // SUCCESS (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |