有没有一种“有条件的回报”

Ben*_*eun 4 php return function conditional-statements

我正在编写一个调用其他函数的函数,直到其中一个返回“ not false”值。此值应由main函数返回。重写此函数的最短方法是什么,这样它就不会两次调用其他函数,并且-如果可能的话-避免使用额外的变量?

function doSomething(){
    if (tryA()) return tryA();
    if (tryB()) return tryB();
    if (tryC()) return tryC();
    return screwIt();
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 6

您可以使用三元运算符:

return tryA() ?: (tryB() ?: (tryC() ?: screwIt()));
Run Code Online (Sandbox Code Playgroud)

3v4l.org上的演示


Rig*_*lly 5

只需在if测试中设置一个var,然后在if的主体中使用它作为返回值

function doSomething(){
    if ($ret = tryA()) return $ret;
    if ($ret = tryB()) return $ret;
    if ($ret = tryC()) return $ret;
    return screwIt();
}
Run Code Online (Sandbox Code Playgroud)