Hashable 协议学习日记

public protocol Hashable : _Hashable, Equatable { 

 var hashValue: Int { get }

}

从源码可以看到  Hashable继承了 _Hashable Equatable 

同时继承 Equatable 应该是为了确定 hashValue 和 equalTo方法同时得到了重新实现

extension _RuntimeHelpers { 

 @_silgen_name("swift_stdlib_Hashable_isEqual_indirect") 

 public static func Hashable_isEqual_indirect(    _ lhs: UnsafePointer,    _ rhs: UnsafePointer) -> Bool {  

  return lhs.pointee == rhs.pointee  

 @_silgen_name("swift_stdlib_Hashable_hashValue_indirect")

  public static func Hashable_hashValue_indirect(    _ value: UnsafePointer) -> Int {

return value.pointee.hashValue

}

}

以上是默认的实现  equalTo 默认比较之争  hashValue默认返回指针的hash值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容