你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
调用表达式
调用表达式是任何编程语言的重要组成部分。 与偏函数应用非常类似,只要返回的值是适当的类型,运算和函数调用就可以在任何位置用作表达式。
以这种形式调用操作的用途主要在于调试,此类操作调用是任何 Q# 程序中最常见的构造之一。 同时,运算只能从其他运算内部调用,而不能从函数内部调用。 有关详细信息,请参阅量子比特。
由于可调用对象是一类值,因此调用表达式是支持模式的一种通用方法,这些模式不够常见,不足以适合自己的专用语言构造,或者由于其他原因尚未 () 引入专用语法。 用作此用途的库方法的一些示例是 ApplyIf
,它会在要设置的经典位上调用运算条件;ApplyToEach
,它将给定运算应用到数组中的每个元素;ApplyWithInputTransformation
,如以下示例所示。
operation ApplyWithInputTransformation<'TArg, 'TIn>(
fn : 'TIn -> 'TArg,
op : 'TArg => Unit,
input : 'TIn
) : Unit {
op(fn(input));
}
ApplyWithInputTransformation
将函数 fn
、运算 op
和 input
值用作参数,将给定函数应用于输入,然后使用从该函数返回的值调用给定的运算。
为使编译器自动生成用于支持特定函子的专用化,通常要求被调用的运算也支持这些函子。 两个例外的情况是共轭的外部块中的调用,它们始终需要支持 Adjoint
函子,但永不需要支持 Controlled
函子;以及自伴随运算,它们支持 Adjoint
函子,但不会对单个调用施加任何额外的要求。