Swift可选绑定常量和范围

时间:2015-05-25 17:05:07

标签: ios swift scope

我试图理解为什么以下内容在Swift中有效。我假设它与Swift中作用域的方式有关。

let name = "test" //assigns "test" to name
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName { //assigns "John Appleseed" to name
  let name = "no error" //assigns "no error" to name
  greeting = "Hello, \(name)" //assigns "Hello, no error" to greeting
}
println(name) //prints "test"

我相信正在发生的事情是在不同的范围内创建3个单独的名称常量。第一个让名字在全球范围内。然后可选的绑定let name是另一个范围,然后在if中,let name是另一个范围。然后最终的印刷品又回到了全球范围。

1 个答案:

答案 0 :(得分:0)

你已经明白了:) 它使用它找到的第一个变量名称,从内部范围开始并上升。