Поделиться через


Возвращения и завершения

Существует два доступных выражения, которые завершают выполнение текущей подпрограммы или программы; и returnfail выражения . Как правило, вызываемые компоненты могут завершить выполнение перед выполнением всех своих инструкций с помощью 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 в идеале собирает и разрешает получение сведений о состоянии программы. Это упрощает диагностику и исправление источника ошибки, но требует поддержки со стороны среды выполнения и встроенного ПО, наличие которой зависит от целевой платформы.