首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift switch语句中的小于或大于

Swift switch语句中的小于或大于
EN

Stack Overflow用户
提问于 2015-07-27 23:04:39
回答 7查看 71.4K关注 0票数 173

我熟悉Swift中的switch语句,但想知道如何用switch替换这段代码

if someVar < 0 {
    // do something
} else if someVar == 0 {
    // do something else
} else if someVar > 0 {
    // etc
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-07-27 23:14:01

这里有一种方法。假设someVar是一个Int或其他Comparable,您可以选择将操作数赋给一个新变量。这使您可以使用where关键字对其进行作用域:

var someVar = 3

switch someVar {
case let x where x < 0:
    print("x is \(x)")
case let x where x == 0:
    print("x is \(x)")
case let x where x > 0:
    print("x is \(x)")
default:
    print("this is impossible")
}

这可以简化一点:

switch someVar {
case _ where someVar < 0:
    print("someVar is \(someVar)")
case 0:
    print("someVar is 0")
case _ where someVar > 0:
    print("someVar is \(someVar)")
default:
    print("this is impossible")
}

您还可以使用范围匹配完全避免where关键字:

switch someVar {
case Int.min..<0:
    print("someVar is \(someVar)")
case 0:
    print("someVar is 0")
default:
    print("someVar is \(someVar)")
}
票数 282
EN

Stack Overflow用户

发布于 2015-07-28 03:11:43

您可以:

switch true {
case someVar < 0:
    print("less than zero")
case someVar == 0:
    print("eq 0")
default:
    print("otherwise")
}
票数 15
EN

Stack Overflow用户

发布于 2016-11-03 22:18:58

下面是ranges的外观

switch average {
case 0..<40: //greater or equal than 0 and less than 40
    return "T"
case 40..<55: //greater or equal than 40 and less than 55
    return "D"
case 55..<70: //greater or equal than 55 and less than 70
    return "P"
case 70..<80: //greater or equal than 70 and less than 80
    return "A"
case 80..<90: //greater or equal than 80 and less than 90
    return "E"
case 90...100: //greater or equal than 90 and less or equal than 100
    return "O"
default:
    return "Z"
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31656642

复制
相关文章

相似问题

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