【发布时间】:2022-11-27 03:19:57
【问题描述】:
刚开始学习 Swift,我真的对以下行为感到困惑。
这是我在没有 Foundation 的情况下运行 String.contains 时得到的结果:
"".contains("") // true
"a".contains("") // true
"a".contains("a") // true
"" == "" // true
这就是我从 Foundation 得到的:
import Foundation
"".contains("") // false
"a".contains("") // false
"a".contains("a") // true
"" == "" // true
为什么结果会因我是否导入 Foundation 而不同?还有其他这样的差异吗?某处是否有详尽的清单?在基金会文档中没有找到任何内容,但这似乎很重要。我只知道this 其他例子。
还:如何这会发生吗?这正常吗?我知道 Swift 有类似扩展的东西,一旦包含它们就会改变每个实例的行为,但肯定应该只添加行为,而不是改变现有行为。如果现有行为发生变化,语言不应该以某种方式表明这一点,比如如果我想要不同的行为就让我使用不同的类型吗?
【问题讨论】:
标签: swift string foundation