Types 如何将Swift类型作为方法参数传递?

Types 如何将Swift类型作为方法参数传递?,types,parameters,swift2,Types,Parameters,Swift2,我想这样做: func doSomething(a: AnyObject, myType: ????) { if let a = a as? myType { //… } } 在Objective-C中,类的类别是class您必须使用一个泛型函数,其中参数仅用于类型信息,因此您可以将其转换为T: func doSomething<T>(_ a: Any, myType: T.Type) { if let a = a as? T {

我想这样做:

func doSomething(a: AnyObject, myType: ????)
{
   if let a = a as? myType
   {
       //…
   }
}

在Objective-C中,类的类别是
class

您必须使用一个泛型函数,其中参数仅用于类型信息,因此您可以将其转换为
T

func doSomething<T>(_ a: Any, myType: T.Type) {
    if let a = a as? T {
        //…
    }
}

// usage
doSomething("Hello World", myType: String.self)
有了这个协议,你就可以写了

func numberFactory<T: IntInitializable>(value: Int, numberType: T.Type) -> T {
    return T.init(value: value)
}

// usage
numberFactory(value: 4, numberType: MyNumber.self)
func numberFactory(值:Int,numberType:T.Type)->T{
返回T.init(值:value)
}
//用法
numberFactory(值:4,numberType:MyNumber.self)

您将希望将泛型与类型为
T.type
的方法输入一起使用,然后您可以强制转换为
T
–例如,请参见我如何调用构造函数?@Augusto请参见我的更新答案。我希望这有帮助。让我解释一下我的问题:我有一个带有一些表的数据库,对于每个表,我有一个类(对于每个对象,如产品、人员、客户等),我想创建一个通用函数来读取数据库中的所有记录,因为我想使用T(类型类)来创建这些对象的列表。我不知道如何设置type类来创建新对象。我的构造函数会收到一个属性的命令,比如parameter。@Augusto我认为“Rob”在你的问题中回答得很好,这几乎就是我的例子。
func numberFactory<T: IntInitializable>(value: Int, numberType: T.Type) -> T {
    return T.init(value: value)
}

// usage
numberFactory(value: 4, numberType: MyNumber.self)