是否可以在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模式:
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情况下没有“默认失败”。
break