Swift-如何在泛型函数中获取数组元素的类型

Swift-如何在泛型函数中获取数组元素的类型,swift,Swift,我需要在泛型函数中获取元素的类型 let array = [String].self -> Array<String>.Type let element = array.Element.self -> String.Type JSONDecoder().decode(element, from: data) -> works fine func foo<T>(type: T.Type) where T: Decodable{

我需要在泛型函数中获取元素的类型

let array = [String].self          -> Array<String>.Type
let element = array.Element.self   -> String.Type
JSONDecoder().decode(element, from: data) -> works fine

func foo<T>(type: T.Type) where T: Decodable{
    let element = type.Element      ->   Error. How to get element here?
    JSONDecoder().decode(element, from: data)
}

foo(array)
let array=[String].self->array.Type
让element=array.element.self->String.Type
JSONDecoder().decode(元素,from:data)->工作正常
func-foo(type:T.type),其中T:Decodable{
让element=type.element->Error。如何在此处获取元素?
JSONDecoder().decode(元素,来源:数据)
}
foo(数组)

在本例中,如何在foo函数中获取元素类型?

仅当
T
被约束为
Sequence
时,代码才起作用,因为只有序列才具有
元素类型

您必须在
元素
之后添加
.self

func foo<T>(type: T.Type) where T: Decodable, T : Sequence {
    print(type)
    print(type.Element.self)
}

这里的元素是什么?本例中的字符串
... where T: Decodable, T : Sequence, T.Element : Decodable