Swift:switch语句中未解析的标识符

use*_*464 1 xcode closures scope switch-statement swift

我正在苹果公司的快速之旅中在Xcode6-Beta4的操场上尝试以下内容:

let vegetable = "red pepper"
switch vegetable{
case "celery":
    let vegetableComment = "Add some raisins and make ants on a log."
case "cucumber", "watercress":
    let vegetableComment = "That would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
    let vegetableComment = "Is it a spicy \(x)"
default:
    let vegetableComment = "Everything tastes good in soup."
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试调用vegetableCommentswitch语句中定义的变量,我得到了一个错误Use of unresolved identifier 'vegetableComment'

它是否与swift中switch语句的范围/闭包有关?

das*_*ght 7

它是否与swift中switch语句的范围/闭包有关?

是的,它与变量的范围有关.你有四个常量叫vegetableComment.每个都是case作为switch声明的范围.

要访问在a中分配的变量,switch需要var在输入开关之前将其声明为a :

var vegetableComment = String()
let vegetable = "red pepper"
switch vegetable{
case "celery":
    vegetableComment = "Add some raisins and make ants on a log."
case "cucumber", "watercress":
    vegetableComment = "That would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
    vegetableComment = "Is it a spicy \(x)"
default:
    vegetableComment = "Everything tastes good in soup."
}
Run Code Online (Sandbox Code Playgroud)