네임스페이스
최상위 수준에서 Q# 프로그램은 네임스페이스 집합으로 구성됩니다. 주석을 제외하고 네임스페이스는 Q# 프로그램의 유일한 최상위 요소이며 다른 모든 요소는 네임스페이스 내에 있어야 합니다. 각 파일에는 0개 이상의 네임스페이스가 포함될 수 있으며 각 네임스페이스는 여러 파일에 걸쳐 있을 수 있습니다. Q#은 중첩된 네임스페이스를 지원하지 않습니다.
네임스페이스 블록은 키워드 namespace
, 네임스페이스 이름, 중괄호 { }
안의 블록 콘텐츠로 구성됩니다.
네임스페이스 이름은 점(.
)으로 구분된 하나 이상의 법적 기호 시퀀스로 구성됩니다.
더 나은 가독성을 위해 네임스페이스 이름에 점이 포함될 수 있지만 Q#은 네임스페이스에 대한 상대 참조를 지원하지 않습니다. 예를 들어, 두 개의 네임스페이스 Foo
및 Foo.Bar
는 관련이 없으며 계층 구조의 개념이 없습니다. 특히, Foo.Bar
에 정의된 함수 Baz
의 경우 Foo
를 연 다음 Bar.Baz
를 통해 해당 함수에 액세스할 수 없습니다.
네임스페이스 블록에는 연산, 함수 및 형식 선언뿐만 아니라 열린 지시문도 포함될 수 있습니다. 이들은 임의의 순서로 발생할 수 있으며 기본적으로 재귀적입니다. 즉, 임의의 순서로 선언 및 사용할 수 있으며 자신을 호출할 수 있습니다. 사용 전에 형식 또는 호출 가능 요소를 선언할 필요가 없습니다.
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 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기