/ / Cosa fa effettivamente l'associazione costante nelle istruzioni switch? - rapido, switch-statement, costanti

Che cosa fa in realtà il costante legame nelle istruzioni switch? - swift, switch-statement, costanti

Non mi è chiaro come let è usato in switch dichiarazioni.

Considera questo:

let greeting = (1,10)

switch greeting {

case let (x,y) where x == y:
print("hello")

case (x,y) where x < y: //error here
print("what"s up")

default: "No match"
}


Secondo il Documenti Apple:

[...] i pattern in un caso possono anche associare costanti usando la parola chiave let (possono anche associare variabili usando la parola chiave var). Queste costanti (o variabili) possono quindi essere referenziate in una corrispondente clausola where e in tutto il resto del codice nell'ambito del caso. Detto questo, se il caso contiene più pattern che corrispondono all'espressione di controllo, nessuno di questi pattern può contenere associazioni costanti o variabili.


Qual è la tupla (x, y) legato al mio esempio, e perché non è possibile fare di nuovo riferimento?

risposte:

1 per risposta № 1

Dalla tua citazione dalla documentazione di Swift:

... può quindi essere referenziato in una corrispondente clausola where e in tutto il resto del codice nell'ambito del caso.

Quindi nel primo caso

case let (x,y) where x == y:
print("hello")

greeting (che è la tupla (1, 10)) è abbinato a modello

let (x,y) where x == y

e se corrisponde, x è associato al primo elemento tupla e y al secondo.

Questa associazione è limitata all'ambito del primo caso, e non può essere utilizzato nel secondo o in altri casi.

Per compilare il codice, aggiungine un altro let vincolante per il secondo Astuccio:

switch greeting {

case let (x,y) where x == y:
print("(x) is equal to (y)")

case let (x,y) where x < y:
print("(x) is less than (y)")

default:
print("No match")
}