首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带量程的开关箱

带量程的开关箱
EN

Stack Overflow用户
提问于 2018-10-05 12:33:41
回答 6查看 26.9K关注 0票数 36

我正在学习斯威夫特,在看视频之前,我试着用我自己的瑞恩·温德利希()来编写游戏“牛眼”(Bullseye)。

我需要给用户点,这取决于他离目标号码有多近。我试图计算差异,而不是检查范围和给用户点,这是我做的If-否则(不能用开关的情况):

代码语言:javascript
运行
复制
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给了我一条错误消息。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-10-05 12:46:41

这应该能行。

代码语言:javascript
运行
复制
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编程语言书中,->区间匹配。

票数 70
EN

Stack Overflow用户

发布于 2020-10-13 14:11:31

如果您需要检查一个值是否大于任何数字,或者在两个值之间使用,则可以使用where而不是if,这样会更干净一些。

代码语言:javascript
运行
复制
func isOutdated(days: Int) -> Outdated {

    var outdatedStatus = Outdated.none

    switch days {
    case _ where days < 5:
        outdatedStatus = .tooLow
    case 5...10:
        outdatedStatus = .low
    case 11...20:
        outdatedStatus = .high
    case _ where days > 20:
        outdatedStatus = .expired
    default:
        outdatedStatus = .none
    }
    return outdatedStatus
}
票数 11
EN

Stack Overflow用户

发布于 2018-10-05 12:45:54

您可以相应地返回所需的值:

代码语言:javascript
运行
复制
switch diff {
case 0:
    print("Bull Eye")
case 1..<10:
    print("Almost Bull Eye")
case 10..<30:
    print("Close")
default:
    print("Too Far")
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52665744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档