现在,我希望能够查看Arrayso中是否包含对象:
Array
func isIncluded<U:Comparable>(isIncluded : U) -> Bool { for item in self { if (item == isIncluded) { return true } } return false }
如果您发现此功能属于Array扩展名。问题是如果将其添加到此:
extension Array{ }
我收到以下错误:
找不到’==’的重载,该重载接受提供的参数
我了解我可能需要告诉什么样的对象应该在里面,Array例如:T[] <T.GeneratorType.Element: Comparable>。但这还不起作用:
T[] <T.GeneratorType.Element: Comparable>
括号中的语句块是未使用的闭包 非标称类型’T []’无法 扩展
使用Swift时,我们需要考虑是否有一个 函数 可以解决问题-在类的方法之外。
就像我们这里的情况一样:
contains(theArray, theItem)
您可以在操场上尝试:
let a = [1, 2, 3, 4, 5] contains(a, 3) contains(a, 6)
通过cmd单击Swift符号(例如 Array ),然后在该文件中四处查看,我发现了很多这些函数(该文件似乎是包含Swift通用类和函数的所有声明的全局文件)。
这是一个小扩展,它将向所有数组添加“ contains”方法:
extension Array { func contains<T: Equatable>(item: T) -> Bool { for i in self { if item == (i as T) { return true } } return false } }