【发布时间】:2015-10-20 18:48:52
【问题描述】:
谁能给我一个很好的理由说明为什么这不起作用:
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' 或您的类型,当您将值与可选数组相等时,它会返回类型不相等的情况 None 在第二个 erray 的情况下返回,而不是 stial 没有类型。事实上,当你做'a == b'时它是不同的类型 -
问题已在 Swift 4.1 中解决