只要条件为真,我就需要找到最佳的解决方案(主要是在复杂性/速度上,而不是可读性或RAM分配)来执行不同操作(例如函数调用)的自定义序列。如果错误,则必须停止该序列。这是一个解决方案,例如:
/*This function starts when "condition = true", and
must stop running when "condition = false"*/
public void sequence(){
//Every function has a duration lower than a milisecond
function_a();
if( condition = false ) return;
function_b();
/*--------------------------------
same pattern * 20 (approximation)
---------------------------------*/
if( condition = false ) return;
function_z();
//END of the sequence
}
比上一个更具可读性的另一个示例:
public void sequence_switch(){
int currentStep = 0;
do{
switch(currentStep){
case 0:
function_a();
break;
case 1:
function_b();
break;
/*--------------------------------
same pattern * 20 (approximation)
---------------------------------*/
case 2:
function_z();
break;
}
currentStep ++;
}while( condition = true );
}
我一直在考虑异常,但是在某些情况下,它们会使程序变慢,也许情况并非如此?
更多信息:在大多数情况下(95%),该序列将不得不在执行前5个操作时停止,或者达到结束。 (想象一下机械臂必须将物体移动到不同的位置,如果它没有正确抓住物体,它将很快掉落,因此以下所有操作都不应该执行)
条件为假时立即停止该序列是至关重要的。
编辑:欢迎使用其他解决方案,但真正的答案是在效率方面进行比较。 此循环的理想情况是游戏中的宏:条件可能是“握住钥匙”,并且如果您没有在正确的时间使用这个复杂的宏,则想取消它(不这样做)。希望程序继续执行此顺序,则要恢复对鼠标/键盘的完全控制)。但是,如果一切顺利,除非有极少数情况,否则您将一直坚持到最后。
答案 0 :(得分:1)
您的第一个解决方案具有完美的性能,不可能做得更好。