为什么重新声明 'optional binding' 不会产生错误?

Why doesn't redeclaration of 'optional binding' create an error?

我正在 Playground 中执行此操作,但没有收到任何错误。我不是在重新创建常量 range 吗?它发生在两个不同的范围内吗?背景中发生了什么导致此 不是 错误?

if let range = add1.rangeOfString(", ") {
    print(add1.substringToIndex(range.startIndex))
    print (range)
}

if let range = add1.rangeOfString(", ") {
    print(add1.substringToIndex(range.startIndex))
    print (range)
}

通过 if-let 的可选绑定引入的变量在 let 子句之后是局部的,直到 true-case 代码块结束。

所以,是的。您的两个 range 驻留在 2 个不同的范围内

guard-let 是另一回事。)