Diramazione condizionale
Il ramo condizionale è espresso sotto forma di if
espressioni. Un'espressione if
è costituita da una if
clausola, seguita da zero o più elif
clausole e facoltativamente da un blocco else. Ogni clausola segue il modello
keyword condition {
<statements>
}
dove keyword
viene sostituito rispettivamente con if
o elif
rispettivamente, condition
è un'espressione di tipo Bool
e <statements>
deve essere sostituita con zero o più istruzioni. Il blocco facoltativo else
è costituito dalla parola chiave else
seguita da zero o più istruzioni racchiuse tra parentesi graffe, {
}
.
Primo blocco per il quale l'oggetto condition
restituisce true
verrà eseguito. Il else
blocco, se presente, viene eseguito se nessuna delle condizioni restituisce true
. Il blocco viene eseguito nel proprio ambito, ovvero qualsiasi associazione effettuata come parte del blocco non è visibile dopo la fine del blocco.
Si supponga, ad esempio, che qubits
sia il valore di tipo Qubit[]
e che r1
e r2
siano di tipo Result
,
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
È anche possibile esprimere una semplice diramazione sotto forma di un'espressione condizionale.
Restrizioni specifiche della destinazione
L'integrazione stretta tra costrutti di flusso di controllo e calcoli quantistici rappresenta una sfida per l'hardware quantistico corrente. Alcuni processori quantistici non supportano la diramazione basata sui risultati delle misurazioni. Di conseguenza, il confronto per i valori di tipo Result
genera sempre un errore di compilazione per Q# i programmi destinati all'esecuzione in tale hardware.
Altri processori quantistici supportano tipi specifici di diramazione basata sui risultati delle misurazioni. Le espressioni più generali if
supportate in sono compilate in Q# istruzioni appropriate che possono essere eseguite su tali processori. Le restrizioni imposte sono che i valori di tipo Result
possono essere confrontati solo come parte della condizione all'interno if
di espressioni nelle operazioni. Inoltre, i blocchi di esecuzione condizionale non possono contenere espressioni return
o variabili modificabili dichiarate all'esterno del blocco.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per