命名空間
在最上層,Q# 程式是由一組命名空間所組成。 除了註解之外,命名空間是 Q# 程式中唯一最上層的元素,而任何其他元素必須位於命名空間內。 每個檔案可能包含零個或多個命名空間,而且每個命名空間可能會跨越多個檔案。 Q# 不支援巢狀命名空間。
命名空間區塊是由關鍵字 namespace
所組成,後面接著命名空間名稱和括號 { }
內區塊的內容。
命名空間名稱包含一或多個合法符號的序列,並以點 (.
) 分隔。
雖然命名空間名稱可能包含點以提高可讀性,但 Q# 不支援命名空間的相對參考。 例如,兩個命名空間 Foo
和 Foo.Bar
無關,而且沒有階層的概念。 尤其是,如果是 Foo.Bar
中定義的 Baz
函式,就無法開啟 Foo
,然後再透過 Bar.Baz
存取該函式。
命名空間區塊可能包含 open 指示詞 ,以及 作業、 函式和 類型 宣告。 這些可能會以任何順序發生,而且預設為遞迴,這表示可以依任何順序宣告和使用,而且可以呼叫本身;不需要在使用之前進行類型或可呼叫檔的宣告。
open 指示詞
根據預設,在同一個命名空間內宣告的所有項目都可以存取,而不需要進一步限定。 不過,在不同的命名空間中,只能透過以所屬命名空間的名稱來限定名稱,或在使用該命名空間之前開啟該命名空間,來使用該命名空間中的宣告,如下列範例所示。
namespace Microsoft.Quantum.Samples {
open Microsoft.Quantum.Arithmetic;
open Microsoft.Quantum.Arrays as Array;
// ...
}
此範例會使用 open
指示詞來匯入 Microsoft.Quantum.Artithmetic 命名空間中宣告的所有類型和可呼叫檔。 除非該名稱與命名空間區塊或另一個已開啟命名空間中的宣告相衝突,否則可以參考其非限定名稱。
若要避免輸入全名,同時仍分辨特定元素的來源,您可以定義特殊命名空間的替代名稱或別名 (通常較短)。 在此情況下,該命名空間中宣告的所有類型和可呼叫檔,都可以改為以定義的簡短名稱來限定。
在上述範例中,這是 Microsoft.Quantum.Arrays
命名空間的情況。 例如,在 Microsoft.Quantum.Arrays
中宣告的 IndexRange
函式可以在該命名空間區塊內透過 Array.IndexRange
使用。
無論您是開啟命名空間或定義別名, open
指示詞都只在該檔案中的命名空間片段中有效。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應