PHP で for ループで return が発生するサンプルコード共有

黄舟
リリース: 2023-03-11 11:40:02
オリジナル
3067 人が閲覧しました


まず以下のメソッドの印刷結果と戻り値を見てください:

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート