Swift Generics问题

Swift Generics问题,第1张

概述现在我希望能够看到一个对象是否包含在一个数组中,所以: func isIncluded<U:Comparable>(isIncluded : U) -> Bool{ for item in self { if (item == isIncluded) { return true } } re 现在我希望能够看到一个对象是否包含在一个数组中,所以:
func isIncluded<U:Comparable>(isIncluded : U) -> Bool{    for item in self    {        if (item == isIncluded)        {            return true        }    }    return false}

如果您注意到此函数属于Array扩展.问题是如果将其添加到此:

extension Array{}

我收到以下错误:

Could not find an overload for ‘==’ that accepts the supplIEd arguments

据我所知,我可能需要告诉Array里面应该有哪些对象:T []< T.GeneratorType.Element:Comparable>.但它不起作用:

Braced block of statements is an unused closure
Non-nominal type ‘T[]’ cannot be extended
Expected ‘{‘ in extension

使用Swift,我们需要考虑是否有一个可以解决问题的函数 – 在类的方法之外.

就像我们的情况一样:

contains(theArray,theItem)

你可以在 *** 场上试试:

let a = [1,2,3,4,5]contains(a,3)contains(a,6)

我通过cmd单击Swift符号(例如:Array)然后通过查看该文件(它似乎是包含Swift通用类和函数的所有声明的全局文件)来发现很多这些函数.

这是一个小扩展,它将“包含”方法添加到所有数组:

extension Array {    func contains<T: Equatable>(item: T) -> Bool {        for i in self {            if item == (i as T) { return true }        }        return false    }}
总结

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

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

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

原文地址: http://outofmemory.cn/web/1033136.html

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

发表评论

登录后才能评论

评论列表(0条)

保存