Может кто-то дать мне хорошую причину, почему это не работает:Почему Equatable не определен для дополнительных массивов
let a: [Int]? = [1]
let b: [Int]? = nil
a == b
Это было бы мое решение, предложенное (если безвкусный). Но это тривиально, поэтому я чувствую, что у меня нет веской причины, почему это не реализовано.
func ==<T: Equatable>(lhs: [T]?, rhs: [T]?) -> Bool {
if let lhs = lhs, let rhs = rhs {
return lhs == rhs
}
else if let _ = lhs {
return false
}
else if let _ = rhs {
return false
}
return true
}
На самом деле дополнительное значение перечисления: 'enum OptionalValue {case None case Some (T)}', который может быть «None» или ваш тип, когда вы равны значению для необязательного массива, он возвращает тип case, который не равен. None thet return в случае второго erray, чем stial, нет типа. На самом деле это разные типы, когда вы делаете «a == b» –