有没有办法打破其他方法的循环?

我试图用嵌套的if代码重构某些嵌套循环,然后隔离其中一个嵌套的if并创建了自己的方法。


重构这种类型的代码的任何技巧都非常值得赞赏。


注意:这些仅是示例,原始代码具有很多嵌套循环和if嵌套。


先前的代码:


function bar()

{

    $is_baz = 'BAZ';

    $is_bas = 'BAS';


    while (TRUE) {

        echo 'Im';


        if ($is_baz == 'BAZ') {

            if ($is_bas == 'BAS') {

                echo 'here';

                break;

            } else {

                echo 'not here';

            }

        }


        echo '!!!';

        break;

    }


    echo 'too';

}

重构代码:


function foo($is_bas)

{

    if ($is_bas == 'BAS') {

        echo 'here';

        break;

    } else {

        echo 'not here';

    }

}


function bar()

{

    $is_baz = 'BAZ';

    $is_bas = 'BAS';


    while (TRUE) {

        echo 'Im';


        if ($is_baz == 'BAZ') {

            foo($is_bas);

        }


        echo '!!!';

        break;

    }


    echo 'too';

}

预期结果:Imheretoo


ABOUTYOU
浏览 142回答 2
2回答

斯蒂芬大帝

您不能直接从函数内部中断外循环,但可以返回一个值来告知外循环中断:function foo($is_bas){    if ($is_bas == 'BAS') {        echo 'here';        return true;    }    return false;}function bar(){    $is_baz = 'BAZ';    $is_bas = 'BAS';    while (TRUE) {        echo 'Im';        if ($is_baz == 'BAZ') {            if (foo($is_bas)) break;        }        echo '!!!';        break;    }    echo 'too';}bar();输出:Imheretoo

函数式编程

function foo($is_bas){    if ($is_bas == 'BAS') {        echo 'here';        return true;    }    echo 'not here';    return false;}function bar(){    $is_baz = 'BAZ';    $is_bas = 'BAS';    while (TRUE) {        echo 'Im';        if ($is_baz == 'BAZ' && foo($is_bas)) {            break;        }        echo '!!!';        break;    }    echo 'too';}bar();
打开App,查看更多内容
随时随地看视频慕课网APP