まず以下のメソッドの印刷結果と戻り値を見てください:
public static void main(String[] args) { System.out.println("返回值:" + testResult()); } public static boolean testResult() { for(int i=1; i<=5; i++) { System.out.println("-------------->开始:" + i); if(i == 3) { return true; } System.out.println("-------------->结束:" + i); } return true; }
印刷結果:
-------------->開始: 1
- ---- -------->終了: 1
-------------->開始: 2
--------- ---- ->終了: 2
-------------->開始: 3
戻り値: true、for で値を返すことが exit と同等であることを示しますループ .
1) testResult メソッドをリファクタリングし、for のロジックを別のメソッドに抽出するとします。
public static boolean testResult() { for(int i=1; i<=5; i++) { test1(i); } return true; } public static void test1(int i) throws NullPointerException{ System.out.println("-------------->开始:" + i); if(i == 3) { return; } System.out.println("-------------->结束:" + i); }
これも main メソッドに配置されます。再構成メソッドが testResult メソッドの for ループ内で直接呼び出され、出力される結果は次のようになります:
-------------->Start: 1
- ----- -------->終了: 1
-------------->開始: 2
--------- ----- >終了: 2
-------------->開始: 3
-------------->開始: 4
- ------------->終了: 4
-------------->開始: 5
---- ----- ----->End: 5
戻り値: true
これは、test1(i) メソッドが i=3 に到達しようとしたときに return; ステートメントを使用して中断することを示しています。しかし、ループはまだ完了しています。
2) 次のように、for ループで呼び出されたメソッドに戻り値を与えることもできます:
public static boolean testResult() { for(int i=1; i<=5; i++) { return test2(i); } return true; } public static boolean test2(int i) throws NullPointerException{ System.out.println("-------------->开始:" + i); if(i == 3) { return true; } System.out.println("-------------->结束:" + i); return false; }
出力結果は次のとおりです:
----------- -->開始: 1
-------------->終了: 1
戻り値: false
これは、ブール値の戻り値を持つメソッドを呼び出すことを示しています。 for は、i=3 のときにメソッドが終了するのを防ぎ、ブール値を返します。
3) for ループ内の条件に基づいてブール値を返す必要がある場合。 for ループ内のコードをメソッドに再構築する必要がある場合は、戻り値を持たせる必要がありますが、戻り値をブール値にすることはできません。代わりに String を使用し、for ループで返された String マークを使用して決定することもできます。ループを終了するかどうか~ ~
変換は次のとおりです:
public static boolean testResult() { for(int i=1; i<=5; i++) { String flag = test3(i); if("yes".equals(flag)) { return true; } } return true; } public static String test3(int i) throws NullPointerException{ System.out.println("-------------->开始:" + i); if(i == 3) { return "yes"; } System.out.println("-------------->结束:" + i); return "no"; }
印刷結果:
--------------> 開始: 1
------ -------->終了: 1
-------------->開始: 2
-------------- >End: 2
-- ------------>Start: 3
戻り値: true
for ループ内の元のコードの影響がなかったことを示しますリファクタリングされました~
上記の小さな例は、同様のコードをリファクタリングするときにエラーが発生した経験をまとめたものです。実際のコードでは、 for のコードが数回繰り返されますが、 for のコードはブール値を返す必要があるためです。判定条件に応じた値を設定します。再構築プロセス中に、最初に test1(i) に変更し、次に test2(i) に変更し、最後に test3(i) に変更して、再構築前の効果を実現しました。
以上がPHP で for ループで return が発生するサンプルコード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。