我只是想知道讨厌goto的声明是否与声明一样强大comefrom?在我看来,他们的能力可能是相同的,但我对此并不完全确定。是否有任何正式证据证明它们同样强大(或不同样强大)?
对于任何从未听说过的人:comefrom有点颠倒goto:
comefrom doom;
WriteLine("I will never stop executing!");
doom:
我只是想知道讨厌goto的声明是否与声明一样强大comefrom?在我看来,他们的能力可能是相同的,但我对此并不完全确定。是否有任何正式证据证明它们同样强大(或不同样强大)?
对于任何从未听说过的人:comefrom有点颠倒goto:
comefrom doom;
WriteLine("I will never stop executing!");
doom:
comefrom严格来说比 更强大goto。
每个程序goto都可以机械地转换成一个仅等效的comefrom程序,方法是将每个程序替换goto为相应的comefrom.
反过来是不正确的。这个程序没有 goto-only 等价物:
doom:
comefrom doom;
WriteLine("I will never stop executing!");
goto doom;
comefrom doom;
WriteLine("Guess my time has come!");
该程序以未知次数打印第一个短语,然后打印第二个短语,然后退出。这种不确定性是无法用缺乏comefrom.