根据units
参数的值,我想使用guard
打开华氏温度或摄氏温度。但是,我收到有关
使用未解析的标识符' temp'
来自以下示例代码
let units = 0
if units == 0 {
guard let temp = currentDict["temp_f"] as? String else { return nil }
} else {
guard let temp = currentDict["temp_c"] as? String else { return nil }
}
为什么guard
在此示例中不起作用?
答案 0 :(得分:2)
它不起作用,因为temp
的范围仅限于if
语句。试试这个:
let key = units == 0 ? "temp_f" : "temp_c"
guard let temp = currentDict[key] as? String else { return nil }
答案 1 :(得分:1)
正如其他人已经说过的那样,您可能在temp
范围之外使用if/else
吗?
此代码可以使用
func foo(units:Int) -> String? {
let result: String
if units == 0 {
guard let temp = currentDict["temp_f"] as? String else { return nil }
result = temp
} else {
guard let temp = currentDict["temp_c"] as? String else { return nil }
result = temp
}
return result
}
答案 2 :(得分:-1)
您是否在if / else语句之外使用临时变量?这很可能是你问题的根源。