是否可以在 Swift 中开启泛型类型?
这是我的意思的一个例子:
func doSomething<T>(type: T.Type) {
switch type {
case String.Type:
// Do something
break;
case Int.Type:
// Do something
break;
default:
// Do something
break;
}
}
当尝试使用上面的代码时,我收到以下错误:
Binary operator '~=' cannot be applied to operands of type 'String.Type.Type' and 'T.Type'
Binary operator '~=' cannot be applied to operands of type 'Int.Type.Type' and 'T.Type'
有没有办法切换类型,或者实现类似的效果? (使用泛型调用方法并根据泛型的类型执行不同的操作)
您需要
is
图案:
func doSomething<T>(type: T.Type) {
switch type {
case is String.Type:
print("It's a String")
case is Int.Type:
print("It's an Int")
default:
print("Wot?")
}
}
注意,
break
语句通常是不需要的,没有
Swift 情况下的“默认失败”。
不需要传递类型,你已经知道了:
func doSomething<T>() {
switch T.self {
case is String.Type:
// Do something
case Int.Type:
// Do something
default:
// Do something
}
}