命名空間
在其最上層, Q# 程式是由一組命名空間所組成。 除了 批注之外,命名空間是程式中唯一 Q# 的最上層元素,而任何其他元素都必須位於命名空間內。 每個檔案可能包含零個或多個命名空間,而且每個命名空間可能跨越多個檔案。 Q# 不支援巢狀命名空間。
注意
如果您未明確宣告命名空間,編譯程式會 Q# 使用檔名作為命名空間名稱。
命名空間區塊包含 關鍵詞 namespace
,後面接著命名空間名稱,以及大括弧 { }
內的區塊內容。
Namespace名稱是由一或多個以點 (.
) 分隔的法律符號序列所組成。
雖然命名空間名稱可能包含點,以提升可讀性, Q# 但不支援命名空間的相對參考。 例如,兩個命名空間 Foo
和 Foo.Bar
不相關,而且沒有階層的概念。 特別是,針對 中Foo.Bar
定義的函Baz
式,無法開啟Foo
,然後透過Bar.Baz
存取該函式。
Namespace區塊可能包含匯入指示詞、作業、函式和類型宣告。 這些元素可能會以任何順序發生,且預設為遞歸,這表示可以宣告及使用任何順序,而且可以自行呼叫。 型別或可呼叫的宣告不需要在使用之前。
Import 指示詞
根據預設,可以在不進一步限定的情況下存取相同命名空間內宣告的所有專案。 不過,不同命名空間中的宣告只能藉由將名稱限定為其所屬的命名空間名稱,或在使用該命名空間之前開啟該命名空間來使用,如下列範例所示。
namespace Microsoft.Quantum.Samples {
import Microsoft.Quantum.Arithmetic.*;
import Microsoft.Quantum.Arrays.* as Array;
// ...
}
注意
對於標準 Q# 連結庫中的命名空間,命名空間的根目錄可以簡化為 Std
。 例如,上述範例可以重寫為:
import Std.Arithmetic.*;
import Std.Arrays.* as Array;
此範例會使用 import
指示詞彙入命名空間中 Microsoft.Quantum.Arithmetic
宣告的所有類型和可呼叫專案。 然後,除非該名稱與命名空間區塊或其他開啟的命名空間中的宣告發生衝突,否則您可以依其不合格的名稱來參考它們。
若要避免輸入完整名稱,同時仍區分特定元素的來源,您可以定義特定命名空間的替代名稱或 別名。 在此情況下,您可以藉由定義的簡短名稱來限定該命名空間中宣告的所有類型和可呼叫者。
上一個範例使用 命名空間的 Microsoft.Quantum.Arrays
別名。 接著,您可以使用 中Microsoft.Quantum.Arrays
宣告的函式IndexRange
,例如,透過Array.IndexRange
該命名空間區塊內的 。
無論您是開啟命名空間或定義別名, import
指示詞在檔案中的命名空間片段中都是有效的。