반복 횟수

값 시퀀스를 반복하는 루프는 Q#에서 for 루프로 표현됩니다. Q#의 for 루프는 조건에 따라 중단되지 않고, 대신 반복 또는 다른 언어에서 종종 foreach 또는 iter로 표현되는 항목에 해당합니다. 현재 Q#에서 반복을 지원하는 데이터 형식에는 배열과 범위라는 두 가지가 있습니다.

식은 키워드(keyword)for, 기호 또는 기호 튜플, 키워드(keyword)in, 배열 또는 Range 형식의 식 및 문 블록으로 구성됩니다.

문 블록(루프 본문)은 범위 또는 배열의 각 값에 바인딩된 하나 이상의 루프 변수를 사용하여 반복적으로 실행됩니다. 동일한 분해 규칙이 let, mutable, set, useborrow 문의 바인딩과 같은 다른 변수 할당에 따라 정의된 루프 변수에 적용됩니다. 루프 변수 자체는 변경 없이 바인딩되며 루프 본문 내에서 다시 할당할 수 없고 루프가 종료될 때 범위를 벗어납니다. 루프가 반복되는 식은 루프에 들어가기 전에 평가되며, 루프가 실행되는 동안에는 변경되지 않습니다.

다음 예에서 확인할 수 있습니다. qubitsQubit[] 형식의 값이라고 가정하면 다음과 같습니다.

for qubit in qubits {
    H(qubit);
}

mutable results : (Int, Result)[] = [];
for index in 0 .. Length(qubits) - 1 {
    set results += [(index, M(qubits[index]))];
}

mutable accumulated = 0;
for (index, measured) in results {
    if measured == One {
        set accumulated += 1 <<< index;
    }
}

대상별 제한 사항

Q#에는 break 또는 continue 기본 형식이 없으므로 반복 값이 알려지는 즉시 루프의 길이를 알 수 있습니다. 따라서 for 루프는 모든 양자 하드웨어에서 실행할 수 있습니다.