【问题标题】:Swift: unresolved identifier from a switch statementSwift:switch语句中未解析的标识符
【发布时间】:2014-10-05 12:11:03
【问题描述】:

我正在 Xcode6-Beta4 的操场上尝试以下操作,遵循苹果的 swift tour

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."
}

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

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

【问题讨论】:

    标签: xcode scope swift switch-statement closures


    【解决方案1】:

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

    是的,它与变量的范围有关。您有四个名为vegetableComment 的常量。每一个都限定在switch 语句中的case

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

    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."
    }
    

    【讨论】:

    • 当你用不同的类型填充它时,你就会遇到问题。 (字符串、整数、字典)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多