呼叫表達式
呼叫表達式是任何程序設計語言的重要部分。 作業和函數調用與 部分應用程式非常類似,只要傳回的值是適合的類型,就可以作為任何位置的表達式。
此窗體中呼叫作業的實用性主要在於偵錯,而這類作業呼叫是任何 Q# 程式中最常見的建構之一。 同時,只能從其他作業內呼叫作業,而不能從函式內呼叫作業。 如需詳細資訊,請參閱 Qubits。
使用可呼叫項做為第一級值時,呼叫表達式是支援模式的一般方式,這些模式不夠常見以利自己的專用語言建構,或專用語法尚未因其他原因而 () 。 有一些連結庫方法的範例,其用途為 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
函式,而不會對個別呼叫造成任何其他需求。