相关疑难解决方法(0)

在类扩展中包装泛型方法

我正在尝试将通用Array方法包装在compactMapArray扩展中,以使该方法的目的更具意义/可读性.我只是试图获取一个选项数组并nil从中删除任何和所有值.

extension Array {
    public func removeNilElements() -> [Element] {
        let noNils = self.compactMap { $0 }
        return noNils // nil values still exist
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是compactMap这里不起作用.nil值仍在结果数组中noNils.当我compactMap直接使用该方法而不使用此包装器时,我得到了没有nil值的数组所需的结果.

let buttons = [actionMenuButton, createButton]   // [UIBarButtonItem?]
let nonNilButtons = buttons.compactMap { $0 }    // works correctly
let nonNilButtons2 = buttons.removeNilElements() // not working
Run Code Online (Sandbox Code Playgroud)

我没有正确设计我的扩展方法吗?

swift swift4

5
推荐指数
1
解决办法
133
查看次数

标签 统计

swift ×1

swift4 ×1