你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

返回和终止

有两个表达式可用于结束当前子例程或程序的执行: returnfail 表达式。 通常,可调用项可能会在使用 returnfail 表达式执行其所有语句之前结束其执行。 表达式 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 表达式理想情况下还会收集和允许检索有关程序状态的信息。 这有助于诊断和纠正错误的根源,并且需要执行运行时和固件的支持,这可能因不同的目标而异。