【发布时间】:2020-07-08 15:01:38
【问题描述】:
下面的第一个函数可以很好地检查 FM 值,但是当我在 else if 语句中为 AM 值添加一些验证时,我收到错误消息:Missing return in a function expected to return Int。花括号的放置似乎不是问题。
static var minAMFFrequency: Double = 520.0
static var maxAMFFrequency: Double = 1610.0
static var minFMFFrequency: Double = 88.3
static var maxFMFFrequency: Double = 107.9
func isBandFM() -> Int {
if frequency >= RadioStation.minFMFFrequency && frequency <= RadioStation.maxFMFFrequency {
return 1 //FM
} else {
return 0 //AM
}
}
修改函数有错误:
func isBandFM() -> Int {
if frequency >= RadioStation.minFMFFrequency && frequency <= RadioStation.maxFMFFrequency {
return 1 //FM
} else if frequency >= RadioStation.minAMFFrequency && frequency <= RadioStation.maxAMFFrequency{
return 0 //AM
}
}
【问题讨论】:
-
如果
frequency既不在AM 也不在FM 波段,isBandFM()应该返回什么?编译器无法为你猜测。 -
如果你最终写出类似
return 1 //FM的东西,那就是代码异味。你知道1不清楚,所以你觉得有必要用评论来解释它。相反,您应该考虑将Int(在这种情况下是一个非常“弱”的类型)替换为“更强”且更具自我描述性的东西,例如enum。我建议你看看youtube.com/watch?v=_S6UOrwS-Tg
标签: ios swift if-statement return