pierce laura jeb hijo george bush barbara swift swift3 guard

swift - laura - jeb bush



¿Son múltiples las declaraciones de guardia de la misma manera que una sola? (2)

Estos son diferentes en Swift 3. En este caso:

guard let foo = bar, let qux = taco else {

usted está diciendo "barra de desembalaje opcional en foo. Si tiene éxito, desenvuelva opcionalmente el taco en qux. Si tiene éxito, continúe. De lo contrario ..."

Por otro lado esto:

guard let foo = bar, qux = taco else {

dice "barra de desenvolver opcional en foo. Como booleano, evalúe la sentencia de asignación qux qux = taco " Dado que las instrucciones de asignación no devuelven booleanos en Swift, se trata de un error de sintaxis.

Este cambio permite declaraciones de guard mucho más flexibles, ya que puede entremezclar desempaquetado opcional y booleanos a lo largo de la cadena. En Swift 2.2, tuvo que desenvolver todo y luego hacer todos los controles booleanos al final en la cláusula where (que a veces hacía imposible expresar la condición).

¿Hay alguna diferencia funcional entre:

guard let foo = bar, let qux = taco else { ... }

Y:

guard let foo = bar, qux = taco else { ... }

Me parece que son lo mismo y no es necesario let extra?


No, ya no es lo mismo en Swift 3.0. Xcode le da un error y le pide que agregue let cuando está aplicando múltiples variables.

Entonces deberías usar

guard let foo = bar, let qux = taco else { ... }