swift - for - Palabra clave de "dónde" rápida
uiswitch swift (2)
Descargo de responsabilidad: swift noob
Hola, acabo de comenzar a aprender Swift y pasé por el lenguaje de programación Swift (el libro de Apple publicado durante la WWDC) y me preguntaba qué es la palabra clave "dónde". Fue utilizado en
let vegetable = "red pepper"
switch vegetable {
case "celery":
let vegetableComment = "Add some raisins and make ants on a log."
case "cucumber", "watercress":
let vegetableComment = "That would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
let vegetableComment = "Is it a spicy /(x)?"
default:
let vegetableComment = "Everything tastes good in soup."
}
Extracto de: Apple Inc. "El lenguaje de programación Swift". IBooks. https://itun.es/us/jEUH0.l
Si alguien pudiera explicar y / o mostrar el equivalente en otro idioma (java, c ++, obj-c, etc.) sería genial.
Disculpas si esto ya se ha pedido, no lo vi por ningún lado.
Las declaraciones de switch
de Swift son mucho más poderosas que las utilizadas en la mayoría de los otros idiomas. En lugar de simplemente elegir entre un grupo de valores, utilizan la coincidencia de patrones para seleccionar qué case
evaluar. Echemos un vistazo a cada case
de su ejemplo:
case "celery":
Súper simple: esto coincidirá con la cuerda "celery"
y nada más.
case "cucumber", "watercress":
Este caso coincidirá con la cadena "cucumber"
o la cadena "watercress"
. Guay. En otros idiomas, es probable que necesites usar un caso fallido para obtener ambos.
case let x where x.hasSuffix("pepper"):
Este caso contiene dos conceptos que son particulares a las declaraciones de switch
Swift, cuando se comparan con Java y C. El primero es el enlace de valores: la parte let x
de esta declaración une el valor coincidente con una constante x
que está dentro del alcance del cuerpo del caso .
La siguiente es la cláusula where
. Esta es una prueba booleana, al igual que una sentencia if
, por lo que el caso solo coincide si la expresión es true
. En este ejemplo, x.hasSuffix("pepper")
mira el valor límite y comprueba si termina con "pepper"
. Las cuerdas "red pepper"
, "green pepper"
y "spicy hot pepper"
coincidirían, pero "peppercorns"
no.
default:
En Swift, las instrucciones de switch
deben agotar todos los valores posibles del valor coincidente, por lo que generalmente terminan con un bloque de caso default:
para manejar cualquier valor que no haya coincidido previamente. La única vez que no vería esto es si está comparando una enum
con solo unos pocos valores, ya que podría agotar manualmente todas las opciones.
Puede incluir varios enlaces opcionales en una sola instrucción if y usar una cláusula where para verificar una condición booleana:
if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber < secondNumber {
print("/(firstNumber) < /(secondNumber)")
}
// prints "4 < 42