Swift如何实现传入类型参数,判断变量类型并执行对应逻辑的函数?
可以实现,修正方案如下
你的需求完全可以实现,原代码的问题在于if a is b的写法不符合Swift语法——is关键字后需要跟具体类型,而b是T.Type类型的实例(即类型对象),不能直接放在is后面。
修正代码(支持子类匹配)
如果需要判断a是B类型或其子类类型,用泛型参数T直接判断即可:
func magic<T>(a: Any, b: T.Type) { if a is T { doSomething() } else { doSomethingElse() } }
可选:精确匹配类型(不包含子类)
如果要求a的类型必须和传入的B完全一致(不匹配子类),可以用类型对象直接比较:
func magic<T>(a: Any, b: T.Type) { if type(of: a) == b { doSomething() } else { doSomethingElse() } }
内容的提问来源于stack exchange,提问作者David Schmoecker
相关产品推荐
相关产品推荐

