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>.但它不起作用:
使用Swift,我们需要考虑是否有一个可以解决问题的函数 – 在类的方法之外.Braced block of statements is an unused closure
Non-nominal type ‘T[]’ cannot be extended
Expected ‘{‘ in extension
就像我们的情况一样:
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问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)