Условное ветвление
Условное ветвление выражается в форме выражений if
. Выражение if
состоит из if
предложения , за которым следует ноль или более elif
предложений и при необходимости — блока else. Каждое предложение следует шаблону:
keyword condition {
<statements>
}
где keyword
заменяется на if
или elif
соответственно, condition
является выражением типа Bool
, а <statements>
заменяется на ноль или более операторов. Необязательный блок else
состоит из ключевого слова else
, за которым следует ноль или более операторов, заключенных в фигурные скобки ({
}
).
Будет выполнен первый блок, для которого condition
по результатам вычислений будет равняться true
. Блок else
(если он имеется) выполняется в том случае, если ни одно из условий не получает значение true
. Блок выполняется в собственном область, то есть все привязки, сделанные в составе блока, не видны после завершения блока.
Например, предположим, что qubits
является значением типа Qubit[]
, а r1
и r2
имеют тип Result
,
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
Вы также можете выразить простое ветвление в виде условного выражения.
Ограничения в определенных системах
Тесная интеграция между конструкциями потока управления и квантовыми вычислениями представляет собой проблему для современного квантового оборудования. Некоторые квантовые процессоры не поддерживают ветвление на основе результатов измерений. Поэтому сравнение значений типа Result
всегда приведет к ошибке компиляции для программ Q#, предназначенных для выполнения на таком оборудовании.
Другие квантовые процессоры поддерживают определенные виды ветвления на основе результатов измерений. Более общие if
выражения, поддерживаемые в Q# , компилируются в подходящие инструкции, которые можно выполнять на таких процессорах. Ограничения налагаются на то, что значения типа Result
могут сравниваться только как часть условия в if
выражениях в операциях. Кроме того, блоки условного выполнения не могут содержать выражения return
или обновлять изменяемые переменные, объявленные за пределами этого блока.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по