【问题标题】:Swift case statement斯威夫特案例陈述
【发布时间】:2017-03-19 23:40:46
【问题描述】:

我正在 Swift 3.0 中尝试 switch 语句 使用我的代码,无论我的变量是什么,我都会得到 A。 为什么我只得了 A?

var grade = 45

switch grade {

    case (grade ..< 100):
        print("A")
    case (grade ..< 90):
        print("B")
    case (grade ..< 80):
        print("C")
    case (grade ..< 70):
        print("D")

    default:
        print("F. You failed")
}

【问题讨论】:

  • 如果 grade 小于 70,它将小于 100。您可能需要重新审视您的 case 语句的逻辑。

标签: ios swift switch-statement statements


【解决方案1】:

switch 语句考虑一个值并将其与几种可能的匹配模式进行比较。然后它根据成功匹配的 first 模式执行适当的代码块。

在您的具体情况下尝试使用:

var grade = 45

switch grade {

case 90 ..< 100: //Numbers 90-99  Use 90...100 to 90-100
    print("A")
case (80 ..< 90): //80 - 89
    print("B")
case (70 ..< 80): // 70 - 79
    print("C")
case (0 ..< 70): // 0 - 69
    print("D")

default:
    print("F. You failed")//Any number less than 0 or greater than 99 

}

check this

与 C 和 Objective-C 中的 switch 语句相比,switch Swift 中的语句不会落在每个 case 的底部,并且 默认进入下一个。相反,整个 switch 语句 一旦第一个匹配的 switch case 完成它的执行 完成,不需要显式的 break 语句。这使得 switch 语句比 C 中的语句更安全、更易于使用 避免误执行多个 switch case。

问候

【讨论】:

    【解决方案2】:

    开关是从上到下评估的,因此由于第一个测试得到满足 (grade &lt; 100),程序将始终返回 A。您可以简单地颠倒案例的顺序。通常,您希望 switch 语句从最严格到最不严格。

    【讨论】:

    • grade 大于 70 时,您的代码会导致崩溃。
    猜你喜欢
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2017-11-13
    • 2015-08-19
    • 2014-09-11
    相关资源
    最近更新 更多