为什么两个不同的数组文字在 Swift 中彼此相等?

tit*_*coy 3 swift

为什么表达

import Foundation
["a", "b", "c"] == ["c", "b", "a"]
Run Code Online (Sandbox Code Playgroud)

在 Swift 游乐场中评估为true ?

(当未导入 Foundation 时,该表达式的计算结果为 false。)

小智 5

乔什的答案很接近,但并不完全正确。按住 Option 键并单击等于运算符。你的文字是Foundation.CharacterSets。

public static func == (lhs: CharacterSet, rhs: CharacterSet) -> Bool
Run Code Online (Sandbox Code Playgroud)

对于字面解析,编译器将搜索

  1. 您正在使用的模块。
  2. 您的进口。
  3. Swift 标准库。(其中有一些特殊的模块范围消歧规则,其中隐式类型的文字是数组,因为这在很大程度上使得使用该语言更容易。)

在此输入图像描述

这是歧义的错误吗?是的。可以解决吗?我对此表示怀疑。我敢打赌它已经坏了,因为如果进行了详尽的搜索,没有人能够获得足够好的性能。但是请记录一个错误,找出并报告回来!