Одно предложение - так как вы моделируете String
, будет ли он работать, чтобы преобразовать ваш массив [UInt32]
в String
и использовать String
hashValue
? Например:
var hashValue : Int {
get {
return String(self.scalarArray.map { UnicodeScalar($0) }).hashValue
}
}
Это может позволить вам сравнить ваши пользовательские struct
с String
s, хотя, независимо от того, хорошо это или нет, зависит от того, что вы пытаетесь сделать ...
Заметим также, что, используя этот подход, экземпляры ScalarString
будут иметь одинаковый hashValue
, если их представления String
будут канонически эквивалентными, что может быть или не быть тем, что вы желаете.
Итак, я полагаю, что если вы хотите, чтобы hashValue
представлял уникальный String
, мой подход был бы хорошим. Если вы хотите, чтобы hashValue
представлял уникальную последовательность значений UInt32
, ответ @ Kametrixom - это способ пойти ...