Возвращения и завершения
Существует два доступных выражения, которые завершают выполнение текущей подпрограммы или программы; и return
fail
выражения . Как правило, вызываемые компоненты могут завершить выполнение перед выполнением всех своих инструкций с помощью return
выражения или fail
. Выражение return
просто завершит выполнение текущего callalbe, в то время как fail
завершит выполнение всей программы и приведет к ошибке времени выполнения.
Выражение возвращаемого значения
Выражение return
выходит из текущего вызываемого объекта и возвращает управление вызываемому объекту. Он изменяет контекст выполнения, обрабатывая кадр стека.
Выражение всегда возвращает значение в контекст вызываемого объекта; он состоит из ключевое слово return
, за которым следует выражение соответствующего типа. Возвращаемое значение вычисляется до всех действий завершения и возврата элемента управления. К таким завершающим действиям относятся, например, очистка и освобождение кубитов, которые были выделены в контексте вызывающего объекта. При выполнении в симуляторе или валидаторе завершающие действия часто также включают проверки, связанные с состоянием таких кубит, например на надлежащее распутывание от всех активных кубитов.
Выражение return
в конце вызываемого объекта, возвращающего Unit
значение, может быть опущено. В таком случае элемент управления возвращается автоматически при выполнении всех операторов и всех завершающих действий. Вызываемые компоненты могут содержать несколько return
выражений, хотя смежная реализация для операций, содержащих несколько return
выражений, не может быть создана автоматически.
Например, примененная к объекту директива
return 1;
или
return ();
Выражение fail
Выражение fail
полностью завершает вычисление. Это соответствует неустранимой ошибке, которая прерывает работу программы.
Он состоит из ключевое слово fail
, за которым следует выражение типа String
.
должен String
предоставлять сведения о возником сбое.
Например,
fail "Impossible state reached";
или с помощью интерполированной строки,
fail $"Syndrome {syn} is incorrect";
В дополнение к заданному String
выражение fail
в идеале собирает и разрешает получение сведений о состоянии программы. Это упрощает диагностику и исправление источника ошибки, но требует поддержки со стороны среды выполнения и встроенного ПО, наличие которой зависит от целевой платформы.