现在我希望能够看到一个对象是否包含在一个数组中,所以:
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,我们需要考虑是否有一个可以解决问题的函数 – 在类的方法之外.
原文链接:https://www.f2er.com/swift/319253.html就像我们的情况一样:
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 } }