【问题标题】:Pass function to array filter function error - Swift 4将函数传递给数组过滤函数错误 - Swift 4
【发布时间】:2018-03-14 08:38:38
【问题描述】:

我正在尝试扩展 数组类,编写一个简单的函数,该函数将接收一个函数作为参数,并使用它来过滤当前数组。

在这个例子中,“self”实际上是一个数组。

这是我目前使用的:

    func applyFilter(filterFunction: (String) -> Bool) {
    self.filter(filterFunction)
    }

但我从 xCode 收到此错误:

有什么想法吗?

【问题讨论】:

  • 请提供filter函数的实现
  • 我正在扩展数组类。所以filter函数是默认的数组函数。

标签: arrays swift filter swift4


【解决方案1】:

错误消息意味着,通用 Array.filter(_:) 函数期望 Array.Element 不是字符串。

如果您将扩展名和功能更改为:

extension Array where Element == String {

    func applyFilter(_ filter: (String) -> Bool) {
        self.filter(filter)
    }

}

由于这指定函数将只处理字符串元素,因此您可以将函数传递给闭包:

func filter(_ value: String) -> Bool { 
    /* Filter how you need */ 
}

["Hello", "World"].applyFilter(filter(_:))

【讨论】:

  • 哦,我在尝试过滤另一种类型时扩展了特定类型的数组。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2014-05-09
  • 2020-07-28
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多