针对通用类型的Swift检查类型
发布时间:2020-12-14 05:22:04 所属栏目:百科 来源:网络整理
导读:我有一个带有1参数的通用函数,并且想要检查通用类型的传递参数的类型.这样的事情 func genericT(parameter: AnyObject) - Bool { if parameter is T { return true } else { return false }} 但是我不知道该怎么称呼 genericString("Hello") 给我一个编译器
我有一个带有1参数的通用函数,并且想要检查通用类型的传递参数的类型.这样的事情
func generic<T>(parameter: AnyObject) -> Bool { if parameter is T { return true } else { return false } } 但是我不知道该怎么称呼 generic<String>("Hello") 给我一个编译器错误:“不能显式地专门化通用函数
你不能告诉一个函数它的通用占位符的类型(与通用结构体不同).它必须从上下文推断它们.其论据.
执行所需的一种方法是添加与类型T相关的另一个参数.而不是传入虚拟值,您可以使用所需类型的元类型: func generic<T>(parameter: AnyObject,type: T.Type) -> Bool { if parameter is T { return true } else { return false } } let o: AnyObject = "hello" generic(o,String.self) // true generic(o,NSString.self) // also true generic(o,Int.self) // false 但是,我会问你,你认为你在这里实现了什么?你实际上只是做一个功能: o is String // true o is NSString // true o is Int // false 泛型点是一般地对参数进行操作,但是您并没有给出函数任何特定类型的参数来实际执行任何工作(因此无法推断出一个). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |