你当前正在访问 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、运算 opinput 值用作参数,将给定函数应用于输入,然后使用从该函数返回的值调用给定的运算。

为使编译器自动生成用于支持特定函子的专用化,通常要求被调用的运算也支持这些函子。 两个例外的情况是共轭的外部块中的调用,它们始终需要支持 Adjoint 函子,但永不需要支持 Controlled 函子;以及自伴随运算,它们支持 Adjoint 函子,但不会对单个调用施加任何额外的要求。