为了账号安全,请及时绑定邮箱和手机立即绑定

当条件为真时,从头开始执行各种操作序列

当条件为真时,从头开始执行各种操作序列

慕运维8079593 2022-11-30 13:22:29
我需要找到最佳解决方案(主要是复杂性/速度,而不是关于可读性或 RAM 分配)来执行不同操作(例如函数调用)的自定义序列,只要条件为真。如果它变为假,我们必须停止序列。这是一个解决方案,例如:/*This function starts when "condition = true", andmust 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 个操作执行时停止,要么到达终点。(想象一个机械臂要在不同的点移动一个物体,如果它没有正确抓住物体它会很快掉下来,所以下面的所有操作都不应该执行)一旦条件为假,立即停止序列是至关重要的。编辑:欢迎使用其他解决方案,但真正的答案是在效率方面进行比较。这个循环的完美情况类似于游戏中的宏:条件可能是“持有一把钥匙”,如果你没有在正确的时间使用这个复杂的宏,你想取消它(你不希望程序继续此序列,您希望恢复对鼠标/键盘的完全控制)。但如果它开始得很好,你就会坚持到最后,除非在极少数情况下。
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您的第一个解决方案具有完美的性能,不可能做得更好。



查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信