你当前正在访问 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 functor,但永远不需要支持 Controlled functor 和自接作,它们支持 Adjoint functor,而无需对单个调用施加任何其他要求。