我正在学习斯威夫特,在看视频之前,我试着用我自己的瑞恩·温德利希()来编写游戏“牛眼”(Bullseye)。
我需要给用户点,这取决于他离目标号码有多近。我试图计算差异,而不是检查范围和给用户点,这是我做的If-否则(不能用开关的情况):
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. 
}有没有一种更优雅的方法,还是用开关箱?例如,在开关情况下,我不能只做diff == 0,因为xCode给了我一条错误消息。
发布于 2018-10-05 12:46:41
这应该能行。
private func calculateUserScore() -> Int {
    let diff = abs(randomNumber - Int(bullsEyeSlider.value))
    switch diff {
    case 0:
        return PointsAward.bullseye.rawValue
    case 1..<10:
        return PointsAward.almostBullseye.rawValue
    case 10..<30:
        return PointsAward.close.rawValue
    default:
        return 0
    }
}它在控制下的Swift编程语言书中,->区间匹配。
https://stackoverflow.com/questions/52665744
复制相似问题