Share via


Koşullu dallanma

Koşullu dallanma ifadeler biçiminde if ifade edilir. İfade bir if yan tümceden if , ardından sıfır veya daha fazla elif yan tümceden ve isteğe bağlı olarak bir else bloğundan oluşur. Her yan tümce desene uyar

keyword condition {
    <statements>
}

where keyword is replaced if with or elif sırasıyla, condition türünde Boolbir ifadedir ve <statements> sıfır veya daha fazla deyimle değiştirilmelidir. İsteğe bağlı else-block, anahtar sözcüğünden else ve ardından ayraç {}içine alınmış sıfır veya daha fazla deyimden oluşur.

değerlendirmesinin conditiontrue çalıştırılacağı ilk blok. else Varsa bloğu, koşulların hiçbiri olarak değerlendirilmezse trueçalışır. Blok kendi kapsamında yürütülür, yani bloğun parçası olarak yapılan bağlamalar blok sona erdikten sonra görünmez.

Örneğin, ve türünün Qubit[] değeri olduğunu ve r1r2 türünde Resultolduğunu varsayalımqubits.

if r1 == One {
    let q = qubits[0];
    H(q);
} 
elif r2 == One {
    let q = qubits[1];
    H(q);
} 
else {
    H(qubits[2]);
}

Ayrıca, basit dallanmayı koşullu ifade biçiminde de ifade edebilirsiniz.

Hedefe özgü kısıtlamalar

Denetim akışı yapıları ile kuantum hesaplamaları arasındaki sıkı tümleştirme, geçerli kuantum donanımı için bir zorluk oluşturur. Bazı kuantum işlemcileri, ölçüm sonuçlarına göre dallanmayı desteklemez. Bu nedenle, tür Result değerlerinin karşılaştırılması her zaman bu tür donanımlarda çalıştırılması hedeflenen programlar için Q# bir derleme hatasına neden olur.

Diğer kuantum işlemcileri, ölçüm sonuçlarına göre belirli dallanma türlerini destekler. içinde Q# desteklenen daha genel if ifadeler, bu tür işlemcilerde çalıştırılabilir uygun yönergeler halinde derlenir. Uygulanan kısıtlamalar, tür Result değerlerinin yalnızca işlemlerdeki ifadeler içindeki if koşulun bir parçası olarak karşılaştırılabilmesidir. Ayrıca, koşullu çalıştırma blokları herhangi bir return ifade içeremez veya bu bloğun dışında bildirilen değiştirilebilir değişkenleri güncelleştiremez.