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)