我试图扩展 数组类编写一个简单的函数,该函数将接收函数作为参数,并将使用它来过滤当前数组。< / p>
在这个例子中&#34; self&#34;实际上是一个数组。
这是我到目前为止所使用的:
func applyFilter(filterFunction: (String) -> Bool) {
self.filter(filterFunction)
}
但我从xCode收到此错误:
有什么想法吗?
答案 0 :(得分:3)
错误消息表示通用Array.filter(_:)
函数期望Array.Element
不是字符串传递。
如果您将扩展名和功能更改为:
extension Array where Element == String {
func applyFilter(_ filter: (String) -> Bool) {
self.filter(filter)
}
}
由于这指定该函数只处理String元素,因此您可以将函数传递给闭包:
func filter(_ value: String) -> Bool {
/* Filter how you need */
}
["Hello", "World"].applyFilter(filter(_:))