Xcode 箱子和开关在swift中
在下面所示的代码中,蔬菜多次声明为常量。但是Xcode没有得到一个错误。为什么Xcode成功地编译了它,但没有得到错误信息?设为常数Xcode 箱子和开关在swift中,xcode,swift,Xcode,Swift,在下面所示的代码中,蔬菜多次声明为常量。但是Xcode没有得到一个错误。为什么Xcode成功地编译了它,但没有得到错误信息?设为常数 let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some raisins and make ants on a log." case "cucumber", "watercres
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."
}
摘自:苹果公司的《Swift编程语言》 我想你实际上是在说
vegetableComment
被定义为常数,这就是你所困惑的
在Swift中,开关
语句中的每个大小写:
块都有自己的词法范围。
这意味着您可以在每个变量中为所有变量命名相同的名称,并且它们不会冲突。几乎就好像它们有不同的功能
同样,您也不能访问其他数据库中的变量。以下是一些例子:
let vegetable = "red pepper"
var comment = ""
switch vegetable {
case "celery":
comment = "Add some raisins and make ants on a log."
// This is only defined here
var favoriteVegetable = "celery"
case "cucumber", "watercress":
comment = "That would make a good tea sandwich."
// This will be an error, because `favoriteVegetable` is only valid inside the celery case block
// favoriteVegetable = "either cucumber or watercress"
case let x where x.hasSuffix("pepper"):
comment = "Is it a spicy \(x)?"
// We can redefine favoriteVegetable here, because it has nothing to do with the one in the celery block
let favoriteVegetable = "a pepper"
default:
comment = "Everything tastes good in soup."
}
// Similarly, we can't access `favoriteVegetable` here
// println(favoriteVegetable)
// This was defined before the switch statement, so we can get the value that was calculated
println(comment)
我假设您实际上是在谈论将
vegetableComment
定义为常量,这就是您所困惑的
在Swift中,开关
语句中的每个大小写:
块都有自己的词法范围。
这意味着您可以在每个变量中为所有变量命名相同的名称,并且它们不会冲突。几乎就好像它们有不同的功能
同样,您也不能访问其他数据库中的变量。以下是一些例子:
let vegetable = "red pepper"
var comment = ""
switch vegetable {
case "celery":
comment = "Add some raisins and make ants on a log."
// This is only defined here
var favoriteVegetable = "celery"
case "cucumber", "watercress":
comment = "That would make a good tea sandwich."
// This will be an error, because `favoriteVegetable` is only valid inside the celery case block
// favoriteVegetable = "either cucumber or watercress"
case let x where x.hasSuffix("pepper"):
comment = "Is it a spicy \(x)?"
// We can redefine favoriteVegetable here, because it has nothing to do with the one in the celery block
let favoriteVegetable = "a pepper"
default:
comment = "Everything tastes good in soup."
}
// Similarly, we can't access `favoriteVegetable` here
// println(favoriteVegetable)
// This was defined before the switch statement, so we can get the value that was calculated
println(comment)
我假设您实际上是在谈论将
vegetableComment
定义为常量,这就是您所困惑的
在Swift中,开关
语句中的每个大小写:
块都有自己的词法范围。
这意味着您可以在每个变量中为所有变量命名相同的名称,并且它们不会冲突。几乎就好像它们有不同的功能
同样,您也不能访问其他数据库中的变量。以下是一些例子:
let vegetable = "red pepper"
var comment = ""
switch vegetable {
case "celery":
comment = "Add some raisins and make ants on a log."
// This is only defined here
var favoriteVegetable = "celery"
case "cucumber", "watercress":
comment = "That would make a good tea sandwich."
// This will be an error, because `favoriteVegetable` is only valid inside the celery case block
// favoriteVegetable = "either cucumber or watercress"
case let x where x.hasSuffix("pepper"):
comment = "Is it a spicy \(x)?"
// We can redefine favoriteVegetable here, because it has nothing to do with the one in the celery block
let favoriteVegetable = "a pepper"
default:
comment = "Everything tastes good in soup."
}
// Similarly, we can't access `favoriteVegetable` here
// println(favoriteVegetable)
// This was defined before the switch statement, so we can get the value that was calculated
println(comment)
我假设您实际上是在谈论将
vegetableComment
定义为常量,这就是您所困惑的
在Swift中,开关
语句中的每个大小写:
块都有自己的词法范围。
这意味着您可以在每个变量中为所有变量命名相同的名称,并且它们不会冲突。几乎就好像它们有不同的功能
同样,您也不能访问其他数据库中的变量。以下是一些例子:
let vegetable = "red pepper"
var comment = ""
switch vegetable {
case "celery":
comment = "Add some raisins and make ants on a log."
// This is only defined here
var favoriteVegetable = "celery"
case "cucumber", "watercress":
comment = "That would make a good tea sandwich."
// This will be an error, because `favoriteVegetable` is only valid inside the celery case block
// favoriteVegetable = "either cucumber or watercress"
case let x where x.hasSuffix("pepper"):
comment = "Is it a spicy \(x)?"
// We can redefine favoriteVegetable here, because it has nothing to do with the one in the celery block
let favoriteVegetable = "a pepper"
default:
comment = "Everything tastes good in soup."
}
// Similarly, we can't access `favoriteVegetable` here
// println(favoriteVegetable)
// This was defined before the switch statement, so we can get the value that was calculated
println(comment)
你认为什么会失败<代码>蔬菜从未重新定义或更改
vegetableComment
被重新声明,但这没关系,因为每个case
语句都有自己的作用域。对于每个块蔬菜评论将创建代码>。因此,没有错误。让veg{let veg}没有错误。你认为什么会失败<代码>蔬菜
从未重新定义或更改vegetableComment
被重新声明,但这没关系,因为每个case
语句都有自己的作用域。对于每个块蔬菜评论将创建代码>。因此,没有错误。让veg{let veg}没有错误。你认为什么会失败<代码>蔬菜
从未重新定义或更改vegetableComment
被重新声明,但这没关系,因为每个case
语句都有自己的作用域。对于每个块蔬菜评论将创建代码>。因此,没有错误。让veg{let veg}没有错误。你认为什么会失败<代码>蔬菜
从未重新定义或更改vegetableComment
被重新声明,但这没关系,因为每个case
语句都有自己的作用域。对于每个块蔬菜评论将创建代码>。因此,没有错误。让veg{let veg}没有错误。