为什么重新声明 '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
是另一回事。)
我正在 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
是另一回事。)