gpt4 book ai didi

arrays - Swift 的数组相等概念中的错误?

转载 作者:搜寻专家 更新时间:2023-11-01 06:49:13 25 4
gpt4 key购买 nike

试试这个:

    let url1 = NSURL(string: "foo bar")
let url2 = NSURL(string: "http://www.apple.com")
var arr1 = NSURL[]()
var arr2 = NSURL[]()
// one order
arr1 += url1
arr1 += url2
// other order
arr2 += url2
arr2 += url1
// equality test
println(arr1 == arr2) // true!?

经过一些实验,我认为这与 Optionals 有关。 url1返回为 nil,因此为了形成两个 url 的数组,Swift 必须将这些数组(我猜)视为 Optional<NSURL> 的数组。 .但我仍然认为这是一个错误;就好像比较可选 NSURL 数组的概念会导致 Swift 以某种方式举起手来……而且,有人可能会争辩说,这在另一种意义上也是一个错误,因为我明确地将这些数组键入为 NSURL[]。 ;我没说NSURL?[] ,那么为什么 Swift 首先允许 Optional 进入它们呢?

我想知道是否有人注意到任何可能对此事有所启发的类似情况。 (我不认为 this post 是相关的,当然我可能是错的。)

编辑 有些人表示无法重现该问题,因此我在 https://github.com/mattneub/SwiftArrayEqualityTest 发布了一个示例项目

最佳答案

事实上,所有来自 Objective-C API 的实例(本质上是任何 UI* 或 NS* 类)实际上都是可选的,尽管通过声明看起来不是这样,因为 Objective-C 类型总是可以是 nilNSURL 数组本质上是一组隐式展开的可选 NSURLNSURL![]

(我在 this answer 中解释了更多。)

因此,数组可以采用 nil 值并不是一个错误,但它两个计算结果相等的错误。带你去bugreport.apple.com .

关于arrays - Swift 的数组相等概念中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com