Enums 什么';在这个快速代码行中比较的是:.Left=aMovement{print(“Left”)}

Enums 什么';在这个快速代码行中比较的是:.Left=aMovement{print(“Left”)},enums,swift3,Enums,Swift3,有人能帮我理解Swift3代码段最后一行中发生了什么吗 enum Movement { case Left case Right case Top case Bottom } let aMovement = Movement.Left // so I get all this so far ... then this: if case .Left = aMovement { print(

有人能帮我理解Swift3代码段最后一行中发生了什么吗

    enum Movement {
        case Left
        case Right
        case Top
        case Bottom
    }

    let aMovement = Movement.Left

    // so I get all this so far ... then this:

    if case .Left = aMovement { print("move left") }

aMovement已经被定义,所以我不确定单个“=”到底在做什么。看起来应该是一个“==”来检查比较,但这会给出一个错误

由此:

case let x=y
模式允许您检查
y
是否与 图案
x

如果大小写为x=y{…}则写入
严格等同于写入
switch y{case let x:…}
:它只是一种更简洁的语法 当您只想针对一种情况进行模式匹配时非常有用-如 与更适合多种情况匹配的开关相反


虽然似乎应该使用“==”,但在本例中,模式匹配是,而不是。(没有双关语)

相关:,好的。。。我现在明白了。其中抛出的“case”关键字以及将其称为“切换模式匹配”有助于解释单个等式。这似乎是一个快速的疑问检查,是完整的switch语句的捷径(正式声明时必须是详尽的)。感谢有更好的意义,即使是在什么时候使用该语法而不是完整的switch语句会有所帮助!再次感谢