Reflection 如何动态测试自类型和不相关类型
我可以用Swift写:Reflection 如何动态测试自类型和不相关类型,reflection,swift,Reflection,Swift,我可以用Swift写: func id(_: Any) -> Int? { return nil } func id<T: Hashable>(hashable: T) -> Int? { // Weird, what's T needed for? Why not "func id(hashable: Hashable) -> Int? {"? return hashable.hashValue } func id(object: AnyObjec
func id(_: Any) -> Int? {
return nil
}
func id<T: Hashable>(hashable: T) -> Int? { // Weird, what's T needed for? Why not "func id(hashable: Hashable) -> Int? {"?
return hashable.hashValue
}
func id(object: AnyObject) -> Int? {
return reflect(object).objectIdentifier?.hashValue
}
问题是这两个案子让。。。as…:'行被编译器拒绝。两行都有错误:
- 从“任意”向下转换为不相关类型
- 协议“Hashable”只能用作泛型约束,因为它具有自身或关联的类型要求
Hashable
和AnyObject
不是@objc协议,因此您尝试执行的操作似乎不受支持。是的,动态功能目前受到限制。我希望有人能想出一个好办法:)哎呀,意思是说任何对象都有@objc的属性,但它仍然被拒绝:(.但我完全同意Hashable永远不会起作用。这篇文章是为了挑选集体的大脑,看看我是否遗漏了什么。
func dynamicId(anything: Any) -> Int? {
switch anything {
case let hashable as Hashable:
return hashable.hashValue
case let object as AnyObject:
return reflect(object).objectIdentifier?.hashValue
}
return nil
}