【发布时间】:2022-01-05 00:51:26
【问题描述】:
为什么要在 switch/case 之外创建变量?
例如这段代码会有错误Cannot find 'size' in scope:
func sizeCheckNoVar(value: Int) -> String {
switch value {
case 0...2:
let size = "small"
case 3...5:
let size = "medium"
case 6...10:
let size = "large"
default:
let size = "huge"
}
return size
}
有一个默认条件,AFIK 涵盖所有选项。
同时这段代码也可以:
func sizeCheckVar(value: Int) -> String {
var size: String
switch value {
case 0...2:
size = "small"
case 3...5:
size = "medium"
case 6...10:
size = "large"
default:
size = "huge"
}
return size
}
PS 我看到了这个问题Cannot find variable in scope,但我想知道为什么而不是如何避免
【问题讨论】:
-
因为当你在case内部创建变量时,变量的作用域在case内部,不能访问case外部的变量
-
为了简单的方法直接从 case 0..2 中返回值:返回“small”……不需要任何变量
标签: swift xcode switch-statement