juh*_*n_h 22 parameters types swift2
我想做这样的事情:
func doSomething(a: AnyObject, myType: ????)
{
if let a = a as? myType
{
//…
}
}
Run Code Online (Sandbox Code Playgroud)
在Objective-C中,类的类是 Class
Qby*_*yte 56
您必须使用通用函数,其中参数仅用于类型信息,因此您将其强制转换为T:
func doSomething<T>(_ a: Any, myType: T.Type) {
if let a = a as? T {
//…
}
}
// usage
doSomething("Hello World", myType: String.self)
Run Code Online (Sandbox Code Playgroud)
T您通常不知道签名,T因为T可以是任何类型.因此,您必须在协议中指定签名.
例如:
protocol IntInitializable {
init(value: Int)
}
Run Code Online (Sandbox Code Playgroud)
使用此协议,您可以编写
func numberFactory<T: IntInitializable>(value: Int, numberType: T.Type) -> T {
return T.init(value: value)
}
// usage
numberFactory(value: 4, numberType: MyNumber.self)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10953 次 |
| 最近记录: |