Voorwaardelijke vertakking
Voorwaardelijke vertakking wordt uitgedrukt in de vorm van if
expressies. Een if
expressie bestaat uit een if
component, gevolgd door nul of meer elif
componenten en optioneel een else-blok. Elke component volgt het patroon
keyword condition {
<statements>
}
waarbij keyword
wordt vervangen door if
respectievelijk of elif
, condition
is een expressie van het type Bool
en <statements>
moet worden vervangen door nul- of meer-instructies. Het optionele else
-blok bestaat uit het trefwoord else
gevolgd door nul of meer instructies tussen accolades, {
}
.
Het eerste blok waarvoor de condition
evaluatie uitvoert true
, wordt uitgevoerd. Het else
blok, indien aanwezig, wordt uitgevoerd als geen van de voorwaarden resulteert in true
. Het blok wordt uitgevoerd in een eigen bereik, wat betekent dat alle bindingen die als onderdeel van het blok zijn gemaakt, niet zichtbaar zijn nadat het blok is beƫindigd.
Stel dat qubits
de waarde van het type Qubit[]
is en r1
van het type Result
zijn.r2
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
U kunt ook eenvoudige vertakkingen uitdrukken in de vorm van een voorwaardelijke expressie.
Doelspecifieke beperkingen
De nauwe integratie tussen besturingsstroomconstructies en kwantumberekeningen vormt een uitdaging voor de huidige kwantumhardware. Bepaalde kwantumprocessors bieden geen ondersteuning voor vertakking op basis van meetresultaten. Als zodanig resulteert een vergelijking van waarden van het type Result
altijd in een compilatiefout voor Q# programma's die zijn gericht op uitvoering op dergelijke hardware.
Andere kwantumprocessors ondersteunen specifieke soorten vertakkingen op basis van meetresultaten. De meer algemene if
expressies die worden ondersteund in Q# , worden gecompileerd in geschikte instructies die op dergelijke processors kunnen worden uitgevoerd. De opgelegde beperkingen zijn dat waarden van het type Result
alleen kunnen worden vergeleken als onderdeel van de voorwaarde binnen if
expressies in bewerkingen. Bovendien kunnen de voorwaardelijk uitgevoerde blokken geen return
expressies bevatten of veranderlijke variabelen bijwerken die buiten dat blok zijn gedeclareerd.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor