반환 및 종료

현재 서브루틴 또는 프로그램의 실행을 종료하는 두 가지 식을 사용할 수 있습니다. 및 returnfail 입니다. 일반적으로 호출 가능 개체는 또는 fail 식을 사용하여 모든 문을 실행하기 전에 실행을 종료할 수 있습니다return. return 식은 현재 callalbe의 실행을 종료하는 반면 은 fail 전체 프로그램의 실행을 종료하고 런타임 오류가 발생합니다.

반환 식

식은 return 현재 호출 가능 항목에서 종료되고 호출 수신자에게 컨트롤을 반환합니다. 스택 프레임을 표시하여 실행 컨텍스트를 변경합니다.

식은 항상 호출 수신자의 컨텍스트에 값을 반환합니다. 는 키워드(keyword)return, 그 뒤에 적절한 형식의 식으로 구성됩니다. 반환 값은 종료 작업이 수행되고 컨트롤이 반환되기 전에 평가됩니다. 종료 작업에는 호출 가능 항목의 컨텍스트 내에서 할당된 큐비트를 정리하고 해제하는 것과 같은 작업이 포함됩니다. 시뮬레이터 또는 유효성 검사기에서 실행할 때 종료 작업에는 이러한 큐비트의 상태와 관련된 검사(예: 라이브로 남아 있는 모든 큐비트의 얽힘이 제대로 풀리는지 여부)도 포함되는 경우가 많습니다.

return 값을 반환하는 호출 가능 항목의 끝에 있는 Unit 식을 생략할 수 있습니다. 이 경우 모든 명령문이 실행되고 모든 종료 작업이 수행되면 제어를 자동으로 반환합니다. 호출 가능 항목에는 여러 return 식이 포함될 수 있지만 여러 return 식을 포함하는 작업에 대한 인접 구현은 자동으로 생성될 수 없습니다.

예를 들면 다음과 같습니다.

return 1;

또는

return ();

식 실패

식은 fail 계산을 완전히 종료합니다. 이는 프로그램을 중단하는 치명적인 오류에 해당합니다.

키워드(keyword) fail및 형식String의 식으로 구성됩니다. 은 String 발생한 실패에 대한 정보를 제공해야 합니다.

예를 들면 다음과 같습니다.

fail "Impossible state reached";

또는 보간된 문자열을 사용하여

fail $"Syndrome {syn} is incorrect";

지정된 String외에도 식은 fail 이상적으로 프로그램 상태에 대한 정보를 수집하고 검색할 수 있도록 허용합니다. 이렇게 하면 오류의 원인을 쉽게 진단하고 수정할 수 있으며 여러 대상에 따라 다를 수 있는 실행하는 런타임 및 펌웨어의 지원이 필요합니다.