Как работает Swift хэш-строки?
Я просматриваю реализацию String в Swift ( https://github.com/apple/swift/blob/master/stdlib/public/core/String.swift)
String реализует протокол Hashable, что означает, что он должен предоставлять hashValue. Тем не менее, ничего не предусмотрено в реализации String, связанной с выше. Где я могу найти это? Я предполагаю, что String наследует его откуда-то.
1 ответ
Ссылаясь на то, что упомянуто в Swift String - Relationships, вы абсолютно правы относительно:
String реализует протокол Hashable...
Причиной, по которой вы не видите, где находится реализация соответствия Hashable
Протокол в ссылке на файл, который вы указали в вопросе:
'String : Hashable'
соответствие перенесено в отдельный файл. Вы можете найти его здесь: https://github.com/apple/swift/blob/master/stdlib/public/core/StringHashable.swift; Обратите внимание, что файл является StringHashable.swift, но не String.swift.
Вы также можете найти фиксацию этого изменения здесь: https://github.com/apple/swift/pull/4612/commits