在Swift中创建数组

在Swift中创建数组,第1张

概述我试图创建一个数组的集合,使元素独特. 我认为使用Set初始化程序来完成这项工作将是一种优雅的方法.所以我创建了一个数组并尝试使用该数组初始化我的新集. 但是编译器在抱怨.我尝试使用Integer值,它就像一个魅力.但是对于我自己的课程,它不起作用.我还认为Equitable Protocol是正确的方法……但正如你所看到的,它并没有解决我的问题. 考虑以下游乐场: import UIKiti 我试图创建一个数组的集合,使元素独特.
我认为使用Set初始化程序来完成这项工作将是一种优雅的方法.所以我创建了一个数组并尝试使用该数组初始化我的新集.
但是编译器在抱怨.我尝试使用Integer值,它就像一个魅力.但是对于我自己的课程,它不起作用.我还认为Equitable Protocol是正确的方法……但正如你所看到的,它并没有解决我的问题.

考虑以下游乐场:

import UIKitinternal 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

编译器抱怨

can not invoke initializer Set<_> with argument of type [Object]

我需要实施哪个协议才能使工作正常进行?

如果你’命令 – 单击’在Xcode中设置’,它会转到Set类型的定义.你去了:
/// A collection of unique `Element` instances with no defined ordering.public struct Set<Element : Hashable> : Hashable,CollectionType ...

如Rob所述,元素需要确认为Hashable(这又需要Equatable).

调整代码:

import Foundationinternal struct Object: Hashable {    var a: Int    var hashValue: Int { return a.hash }}internal func == (lhs:Object,Object(a:2)]let set = Set(array) // SUCCESS
总结

以上是内存溢出为你收集整理的在Swift中创建数组全部内容,希望文章能够帮你解决在Swift中创建数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1042018.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存