Swift: caso foo (dejar barra): sin un tipo o asignación?

En Swift, entiendo que "let" define una constante. No hay problema. Entonces "deje que foo = 42" y "deje que foo: Int" tenga sentido. Pero veo varias instancias donde simplemente "let foo" está escrito sin asignación ni tipo de especificación. Por ejemplo, "barra de mayúsculas (deje foo): …"

¿Qué sucede exactamente cuando "dejar foo" por sí mismo está en dicho código?

Esta notación se usa para enlazar un valor asociado de una enumeración.

Tomemos esto por ejemplo:

 let anOptionalInt: Int? = 15 switch (anOptionalInt) { case .Some(let wrappedValue): print(wrappedValue) case .None: print("the optional is nil") } 

Esto funciona porque Optional es una enumeración. La primera expresión se puede escribir como:

 let anOptionalInt: Optional<Int> = Optional.Some(15) 

Hay dos casos: .Some y .None . En el caso .Some , hay un valor asociado, llamado Wrapped , mientras que el caso .None no tiene valor asociado.

De hecho, Optional.None es lo mismo que nil .