HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 错误:无法在swift中推断泛型参数’T’大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有从嵌套数组生成flatted数组的函数.它适用于int数组.

let array: [Any] = [1,2,[3]]

func makeFlatArray(_ array: [Any]) -> [Int] {
    var flatArray = [Int]()
    for item in array {
        if let item = item as? Int {
            flatArray.append(item)
        } else if let item = item as? [Any] {
            let result = makeFlatArray(item)
            flatArray += result
        }
    }
    return flatArray
}

但我想让它变得通用,我在尝试时遇到了错误.

func makeFlatArrayGeneric<T>(_ array: [Any]) -> [T] {
    var flatArray = [T]()
    for item in array {
        if let item = item as? T {
            flatArray.append(item)
        } else if let item = item as? [Any] {
            let result = makeFlatArrayGeneric(item)
            flatArray += result
        }
    }
    return flatArray
}

错误

Playground execution Failed:

error: FlatnestedArraysExample.playground:22:26: error: generic parameter 'T' Could not be inferred
            let result = makeFlatArrayGeneric(item)
                         ^

FlatnestedArraysExample.playground:16:6: note: in call to function 'makeFlatArrayGeneric'
func makeFlatArrayGeneric<T>(_ array: [Any]) -> [T] {

解决方法

你必须告诉编译器T的类型.

func makeFlatArrayGeneric<T>(_ array: [Any]) -> [T] {
    var flatArray = [T]()
    for item in array {
        if let item = item as? T {
            flatArray.append(item)
        } else if let item = item as? [Any] {
            let result: [T] = makeFlatArrayGeneric(item)
            flatArray += result
        }
    }
    return flatArray
}

let array: [Any] = [1,[3],[4,[5]]]
let items: [Int] = makeFlatArrayGeneric(array) //[1,3,4,5]

解决问题的更实用的方法.

extension Array {
    func flatten() -> Array<Element> {
        return self.flatMap({ element -> [Element] in
            if let array = element as? Array {
                return array.flatten()
            } else {
                return [element]
            }
        })
    }
}

let items: [Int] = array.flatten() //[1,5]

大佬总结

以上是大佬教程为你收集整理的ios – 错误:无法在swift中推断泛型参数’T’全部内容,希望文章能够帮你解决ios – 错误:无法在swift中推断泛型参数’T’所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。