相关疑难解决方法(0)

创建一个扩展来从Swift中的Array过滤nils

我正在尝试编写一个Array的扩展,它允许将一个可选的T数组转换成一个非可选的T数组.

例如,这可以写成这样的自由函数:

func removeAllNils(array: [T?]) -> [T] {
    return array
        .filter({ $0 != nil })   // remove nils, still a [T?]
        .map({ $0! })            // convert each element from a T? to a T
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法将其作为扩展工作.我试图告诉编译器扩展只适用于可选值的数组.这是我到目前为止:

extension Array {
    func filterNils<U, T: Optional<U>>() -> [U] {
        return filter({ $0 != nil }).map({ $0! })
    }
}
Run Code Online (Sandbox Code Playgroud)

(它不编译!)

arrays generics swift swift-extensions

46
推荐指数
6
解决办法
2万
查看次数

标签 统计

arrays ×1

generics ×1

swift ×1

swift-extensions ×1