3

これを説明するのは少し難しいですが、最善を尽くします。

これは、私が現在実行しているコードに似ています。

function func1()
{

     func2()

}

function func2()
{

     exit();

}

func2 内から func1 の実行を停止できるようにする必要がありますが、exit() よりも優れた方法が必要です。func1 の呼び出し元は他の操作を行う可能性があるため、それらも停止したくありません。func1 の残りの実行を停止したいだけです。

func1 に単純な if ステートメントを配置して func2 の戻り値を検出し、それが特定の値である場合に戻ることができることは承知していますが、それも少し面倒です。

だから私の質問は、関数内から呼び出し元関数の残りの実行を停止するにはどうすればよいですか?

4

3 に答える 3

4

値を返し、それを確認します。

function func1()
{
    $result = func2();
    if ($result === 0) return;

    // Your func1 code here
}

function func2()
{
    if ( ... ) return 1;
    else return 0;
}
于 2013-10-14T20:46:57.220 に答える
0

戻り値のチェックは面倒ではありません。それは標準的な練習です。基本的に次の 2 つのオプションがあります。

  • 戻り値を確認してください。
  • func2 で例外をスローします。func1 でキャッチされない場合は、より高くバブルアップし、両方の関数で実行が停止します。
于 2013-10-14T20:46:31.960 に答える
0

これがうまくいく方法は絶対にありません。

覚えておいてください:func2()だけでなく、どこからでも呼び出すことができますfunc1()。停止しているのは func1 であることをどのように知ることができますか。

呼び出し関数を中断することで問題が解決すると思われる理由が何であれ、もう一度考え直して、適切なアドバイスを得るために全体像について教えてください。

于 2013-10-14T20:47:35.530 に答える