Swift 如何将类名传递给函数,以及在函数中使用类名的init var

Swift 如何将类名传递给函数,以及在函数中使用类名的init var,swift,generics,Swift,Generics,在Swift 4中,我想将类名传递给函数: let usingClass = MyClass.self myFuntion(usingClass) func myFuntion <T>(_ typeClass: T.Type) { ... var myVar: [typeClass] ... } 我的职能: let usingClass = MyClass.self myFuntion(usingClass) func myFuntion <T>(_ typeCl

在Swift 4中,我想将类名传递给函数:

let usingClass = MyClass.self
myFuntion(usingClass)
func myFuntion <T>(_ typeClass: T.Type) {
...
var myVar: [typeClass]
...

}
我的职能:

let usingClass = MyClass.self
myFuntion(usingClass)
func myFuntion <T>(_ typeClass: T.Type) {
...
var myVar: [typeClass]
...

}
func函数(uutypeclass:T.Type){
...
var myVar:[类型类]
...
}
编译时,我获得以下错误消息:

用于未声明的类型“typeClass”

var myVar:[typeClass]


我错了什么?

正如Hamish所建议的,我的问题的答案是,当我想要声明我的变量时,只需使用T。这样,我就可以使用不同类型的相同函数,并且所有函数都可以正常工作:

let usingClass = MyClass.self
myFuntion(usingClass)

let usingAnotherClass = MyOhterClass
myfunction(usingAnotherClass)

func myFuntion<T>(_ typeClass: T.Type) {
    ...
    var myVar: [T]
    ...
}
让usingClass=MyClass.self
MyFunction(使用类)
让我们使用另一个类=MyOhterClass
myfunction(使用其他类)
函数MyFunction(uTypeClass:T.Type){
...
var myVar:[T]
...
}

你不能那样做。所有类型都需要在编译时已知,因此您不能在运行时指定
myVar
的类型。您可能希望它是
[T]
类型。