【发布时间】:2019-03-10 23:15:02
【问题描述】:
我正在学习 Swift,并在观看视频之前尝试自己编写 Ryan Wenderlich 的游戏“Bullseye”。
我需要根据他与目标数字的接近程度来给用户积分。我试图计算差异,然后检查范围并给用户分数,这就是我用 If-else 所做的(不能用 switch case 做):
private func calculateUserScore() -> Int {
let diff = abs(randomNumber - Int(bullsEyeSlider.value))
if diff == 0 {
return PointsAward.bullseye.rawValue
} else if diff < 10 {
return PointsAward.almostBullseye.rawValue
} else if diff < 30 {
return PointsAward.close.rawValue
}
return 0 // User is not getting points.
}
有没有办法更优雅地或使用 Switch-Case 来做到这一点?
我不能只做diff == 0,例如在 switch case 的情况下,因为 xCode 会给我一条错误消息。
【问题讨论】:
-
case 0: return PointsAward.bullseye.rawValue和case 1..<10: return PointsAward.almostBullseye.rawValue等... -
很难看出使用枚举 PointsAward 的意义,因为您只对 rawValue 感兴趣。您是否在代码的其他地方使用枚举?
-
不,我是 Swift 新手,只是想尝试使用基本的枚举。是的,我同意你的观点,这不是真的需要。
-
老兄太有趣了,我在 RW 上做同样的靶心应用程序时也用谷歌搜索了这个。好像RW无处不在!