為什么我應該在 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我看到這個問題無法在范圍內找到變數,但我想知道為什么而不是如何避免
uj5u.com熱心網友回復:
一對大括號稱為范圍。
在 Swift 中(與其他一些語言不同)有一個簡單但鐵的規則:
在范圍內宣告的變數 - 在您的
switch陳述句中的特定情況下- 在其自己的范圍內和較低級別上可見 - 就像在您的第二個示例中一樣它在范圍之外的更高級別上不可見 - 就像在您的第一個示例中一樣。
您甚至可以宣告size為常量,因為它可以保證被初始化。
func sizeCheckVar(value: Int) -> String {
let size: String
switch value {
case 0...2: size = "small"
case 3...5: size = "medium"
case 6...10: size = "large"
default: size = "huge"
}
return size
}
但是實際上您根本不需要區域變數。只是return立即值
func sizeCheckVar(value: Int) -> String {
switch value {
case 0...2: return "small"
case 3...5: return "medium"
case 6...10: return "large"
default: return "huge"
}
}
旁注:switch陳述句中的冒號也是一種范圍分隔符,否則您會在第一個示例中收到有關重新宣告變數的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/368630.html
上一篇:將單元格添加到另一個TableView。(從tableview中選擇一個專案,在另一個tableview中顯示它)
