q#中的'break'相当于什么?

Mah*_*ati 6 break q#

当我遇到病情时,我怎么能摆脱循环?例如:

for (i in 0..10){
    if (i==3){
        // equivalent of break
     }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ova 6

Q#没有中断; 但是,您可以使用repeat-until-success循环实现此行为.

Q#不是通用语言,旨在允许在量子设备上执行程序时进行大量优化.循环就是这种设计的一个例子:如果你事先知道你的循环会做多少迭代,那么使用for循环,如果需要迭代直到满足某些条件,请使用repeat-until-success循环.

你的例子(这不是你需要休息的一个很好的例子)将被写成如下:

mutable i = 0;
repeat {
    set i = i + 1;
} until (i == 10 || i == 3)
fixup {
    ();
}
Run Code Online (Sandbox Code Playgroud)

  • 为了详细说明,像`adjoint auto`这样的功能需要编译器计算"向后运行"时操作的行为.使用`break`关键字非常困难,因此使用其他控制流构造很有帮助. (3认同)