리터럴
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
형식에 대한 기존 리터럴은 true
및 false
입니다.
문자열 리터럴
String
형식에 대한 값 리터럴은 큰따옴표로 묶인 유니코드 문자의 임의 길이 시퀀스입니다.
문자열 내부에서 백슬래시 문자 \
를 사용하여 큰따옴표 문자를 이스케이프하고 줄 바꿈 문자를 \n
으로, 캐리지 리턴을 \r
로, 탭을 \t
로 삽입할 수 있습니다. .
다음은 유효한 문자열 리터럴의 예입니다.
"This is a simple string."
"\"This is a more complex string.\", she said.\n"
Q#은 보간된 문자열도 지원합니다.
보간된 문자열은 임의의 수의 보간 식을 포함할 수 있는 문자열 리터럴입니다. 이러한 식은 임의의 형식일 수 있습니다.
생성 시 식이 평가되고 해당 String
표현이 정의된 리터럴 내의 해당 위치에 삽입됩니다. 보간은 $
특수 문자를 공백 없이 첫 번째 따옴표 바로 앞에 추가하여 사용하도록 설정됩니다.
예를 들어 res
가 1
로 평가하는 식인 경우 다음 String
리터럴의 두 번째 문장에서 "결과는 1이었습니다."라고 표시합니다.
$"This is an interpolated string. The result was {res}."
Qubit 리터럴
양자 메모리는 런타임에서 관리되므로 Qubit
형식에 대한 리터럴이 없습니다. 따라서 Qubit
형식의 값은 할당을 통해서만 얻을 수 있습니다.
Qubit
형식의 값은 양자 비트 또는 큐비트를 처리할 수 있는 불투명한 식별자를 나타냅니다. 지원하는 유일한 연산자는 같음 비교입니다.
Qubit
데이터 형식에 대한 자세한 내용은 큐비트를 참조하세요.
Result 리터럴
Result
형식에 대한 기존 리터럴은 Zero
및 One
입니다.
Result
형식의 값은 이진 양자 측정의 결과를 나타냅니다.
Zero
는 +1 고유 공간에 대한 투영을 나타내고 One
은 -1 고유 공간에 대한 투영을 나타냅니다.
Pauli 리터럴
Pauli
형식에 대한 기존 리터럴은 PauliI
, PauliX
, PauliY
및 PauliZ
입니다.
Pauli
형식의 값은 항등을 나타내는 PauliI
를 사용하여 4개의 단일 큐비트 Pauli 행렬 중 하나를 나타냅니다.
Pauli
형식의 값은 일반적으로 회전 축을 표시하고 측정할 기준을 지정하는 데 사용됩니다.
Range 리터럴
Range
형식에 대한 값 리터럴은 start..step..stop
형식의 식입니다. 여기서 start
, step
및 end
는 Int
형식의 식입니다. step 크기가 1이면 생략할 수 있습니다. 예를 들어 start..stop
은 유효한 Range
리터럴이며 start..1..stop
과 같습니다.
Range
형식의 값은 정수 시퀀스를 나타내며 시퀀스의 첫 번째 요소는 start
이고 후속 요소는 stop
이 전달될 때까지 이전 요소에 step
을 추가하여 가져옵니다.
Range
값은 양쪽 끝에 포함됩니다. 즉, start
와 stop
의 차이가 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)) |
단일 항목을 포함하는 튜플은 형식 및 값 모두에서 항목 자체와 동일한 것으로 취급되며, 이를 싱글톤 튜플 동등성이라고 합니다.
튜플은 값을 단일 값으로 묶는 데 사용되어 쉽게 전달할 수 있습니다. 이렇게 하면 모든 호출 가능 항목에서 정확히 하나의 입력을 가져오고 정확히 하나의 출력을 반환할 수 있습니다.
사용자 정의 형식에 대한 리터럴
사용자 정의 형식의 값은 해당 생성자를 호출하여 생성됩니다. 기본 생성자는 형식을 선언할 때 자동으로 생성됩니다. 현재 사용자 지정 생성자를 정의할 수 없습니다.
예를 들어, IntPair
에 Int
형식의 항목이 두 개 있으면 IntPair(2, 3)
은 기본 생성자를 호출하여 새 인스턴스를 만듭니다.
연산 및 함수 리터럴
익명 연산 및 함수는 람다 식을 사용하여 만들 수 있습니다.