【发布时间】:2019-10-03 21:07:15
【问题描述】:
我不明白为什么在这种情况下可以解开可选值:
let name: String? = "Toto"
guard let name = name else { fatalError() }
print(name)
但当这个 sn-p 被包裹在 for 循环中时:
for _ in 0..<100 {
let name: String? = "Toto"
guard let name = name else { fatalError() }
print(name)
}
我收到错误“定义与以前的值冲突”。
在 Xcode 11.0 中使用 Swift 5。
【问题讨论】:
-
谢谢,仍然不明白为什么它在第一种情况下不起作用,因为
name也在同一范围内重新定义。 -
你在哪里做这个?一个快速的游乐场?
-
我在 Playground 和真实项目(Mac 应用程序)中都对其进行了测试。
-
好吧,你难倒我了。这是奇怪的行为。 MartinR 提供的链接很好地理解和解释了为什么您不能在循环中执行此操作。至于第一种情况,???循环中的解决方法当然很简单,使用一个新的变量名。