리터럴

Unit 리터럴

Unit 형식에 대한 유일한 기존 리터럴은 () 값입니다.

Unit 값은 다른 인수를 전달할 필요가 없거나 실행을 지연시키므로 일반적으로 호출 가능 항목에 대한 인수로 사용됩니다. 또한 다른 값을 반환할 필요가 없을 때 반환 값으로 사용됩니다. 이는 일항 연산, 즉 Adjoint 및/또는 Controlled 함자를 지원하는 연산의 경우입니다.

Int 리터럴

Int 형식에 대한 값 리터럴은 2진수, 8진수, 10진수 또는 16진수 표현으로 표현할 수 있습니다. 이진법으로 표현된 리터럴은 0b, 8진법은 0o, 16진법은 0x 접두사를 사용합니다. 일반적으로 사용되는 십진수 표현에는 접두사가 없습니다.

표현 값 리터럴
이진 0b101010
Octal 0o52
Decimal 42
16진수 0x2a

BigInt 리터럴

BigInt 형식에 대한 값 리터럴은 항상 L로 접미어가 붙으며 2진수, 8진수, 10진수 또는 16진수 표현으로 표현할 수 있습니다. 이진법으로 표현된 리터럴은 0b, 8진법은 0o, 16진법은 0x 접두사를 사용합니다. 일반적으로 사용되는 십진수 표현에는 접두사가 없습니다.

표현 값 리터럴
이진 0b101010L
Octal 0o52L
Decimal 42L
16진수 0x2aL

Double 리터럴

Double 형식에 대한 값 리터럴은 표준 또는 과학적 표기법으로 표현할 수 있습니다.

표현 값 리터럴
Standard 0.1973269804
공학 1.973269804e-1

소수점 뒤에 오는 것이 없으면 소수점 이하 자릿수를 생략할 수 있습니다. 예를 들어 1.은 유효한 Double 리터럴이며 1.0과 같습니다.

Bool 리터럴

Bool 형식에 대한 기존 리터럴은 truefalse입니다.

문자열 리터럴

String 형식에 대한 값 리터럴은 큰따옴표로 묶인 유니코드 문자의 임의 길이 시퀀스입니다. 문자열 내부에서 백슬래시 문자 \를 사용하여 큰따옴표 문자를 이스케이프하고 줄 바꿈 문자를 \n으로, 캐리지 리턴을 \r로, 탭을 \t로 삽입할 수 있습니다. .

다음은 유효한 문자열 리터럴의 예입니다.

"This is a simple string."
"\"This is a more complex string.\", she said.\n"

Q#은 보간된 문자열도 지원합니다. 보간된 문자열은 임의의 수의 보간 식을 포함할 수 있는 문자열 리터럴입니다. 이러한 식은 임의의 형식일 수 있습니다. 생성 시 식이 평가되고 해당 String 표현이 정의된 리터럴 내의 해당 위치에 삽입됩니다. 보간은 $ 특수 문자를 공백 없이 첫 번째 따옴표 바로 앞에 추가하여 사용하도록 설정됩니다.

예를 들어 res1로 평가하는 식인 경우 다음 String 리터럴의 두 번째 문장에서 "결과는 1이었습니다."라고 표시합니다.

$"This is an interpolated string. The result was {res}."

Qubit 리터럴

양자 메모리는 런타임에서 관리되므로 Qubit 형식에 대한 리터럴이 없습니다. 따라서 Qubit 형식의 값은 할당을 통해서만 얻을 수 있습니다.

Qubit 형식의 값은 양자 비트 또는 큐비트를 처리할 수 있는 불투명한 식별자를 나타냅니다. 지원하는 유일한 연산자는 같음 비교입니다. Qubit 데이터 형식에 대한 자세한 내용은 큐비트를 참조하세요.

Result 리터럴

Result 형식에 대한 기존 리터럴은 ZeroOne입니다.

Result 형식의 값은 이진 양자 측정의 결과를 나타냅니다. Zero는 +1 고유 공간에 대한 투영을 나타내고 One은 -1 고유 공간에 대한 투영을 나타냅니다.

Pauli 리터럴

Pauli 형식에 대한 기존 리터럴은 PauliI, PauliX, PauliYPauliZ입니다.

Pauli 형식의 값은 항등을 나타내는 PauliI를 사용하여 4개의 단일 큐비트 Pauli 행렬 중 하나를 나타냅니다. Pauli 형식의 값은 일반적으로 회전 축을 표시하고 측정할 기준을 지정하는 데 사용됩니다.

Range 리터럴

Range 형식에 대한 값 리터럴은 start..step..stop 형식의 식입니다. 여기서 start, stependInt 형식의 식입니다. step 크기가 1이면 생략할 수 있습니다. 예를 들어 start..stop은 유효한 Range 리터럴이며 start..1..stop과 같습니다.

Range 형식의 값은 정수 시퀀스를 나타내며 시퀀스의 첫 번째 요소는 start이고 후속 요소는 stop이 전달될 때까지 이전 요소에 step을 추가하여 가져옵니다. Range 값은 양쪽 끝에 포함됩니다. 즉, startstop의 차이가 step의 배수인 경우 범위의 마지막 요소는 stop입니다. 예를 들어 step이 양수이고 stop < start이면 범위가 비어 있을 수 있습니다.

다음은 유효한 Range 리터럴의 예입니다.

  • 1..3은 범위 1, 2, 3입니다.
  • 2..2..5는 범위 2, 4입니다.
  • 2..2..6은 범위 2, 4, 6입니다.
  • 6..-2..2는 범위 6, 4, 2입니다.
  • 2..-2..1은 범위 2입니다.
  • 2..1는 빈 범위입니다.

자세한 내용은 컨텍스트 식을 참조하세요.

배열 리터럴

배열 리터럴은 쉼표로 구분되고 대괄호 []로 묶인 0개 이상의 식 시퀀스입니다( 예[1,2,3]: ). 모든 식에는 배열의 항목 형식인 공통 기본 형식이 있어야 합니다. 빈 배열을 로 []지정하면 컴파일러가 식의 적절한 형식을 결정하기 위해 형식 주석이 필요할 수 있습니다.

임의의 길이의 배열은 크기 배열 식을 사용하여 만들 수 있습니다. 이러한 식은 형식[expr, size = s]이며 형식 s 의 식일 수 있으며 expr 반복되는 s 배열의 Int 항목이 될 값으로 계산됩니다. 예를 들어 는 [1.2, size = 3] 와 동일한 배열을 [1.2, 1.2, 1.2]만듭니다.

Tuple 리터럴

Tuple 리터럴은 쉼표로 구분되고 () 괄호로 묶인 형식의 하나 이상의 식 시퀀스입니다. 튜플의 형식에는 각 항목 종류에 대한 정보가 포함됩니다.

값 리터럴 Type
("Id", 0, 1.) (String, Int, Double)
(PauliX,(3,1)) (Pauli, (Int, Int))

단일 항목을 포함하는 튜플은 형식 및 값 모두에서 항목 자체와 동일한 것으로 취급되며, 이를 싱글톤 튜플 동등성이라고 합니다.

튜플은 값을 단일 값으로 묶는 데 사용되어 쉽게 전달할 수 있습니다. 이렇게 하면 모든 호출 가능 항목에서 정확히 하나의 입력을 가져오고 정확히 하나의 출력을 반환할 수 있습니다.

사용자 정의 형식에 대한 리터럴

사용자 정의 형식의 값은 해당 생성자를 호출하여 생성됩니다. 기본 생성자는 형식을 선언할 때 자동으로 생성됩니다. 현재 사용자 지정 생성자를 정의할 수 없습니다.

예를 들어, IntPairInt 형식의 항목이 두 개 있으면 IntPair(2, 3)은 기본 생성자를 호출하여 새 인스턴스를 만듭니다.

연산 및 함수 리터럴

익명 연산 및 함수는 람다 식을 사용하여 만들 수 있습니다.