PHP에서 반환이 발생하는 for 루프에 대한 샘플 코드 공유

黄舟
풀어 주다: 2023-03-11 11:40:02
원래의
3024명이 탐색했습니다.


먼저 다음 메소드의 인쇄 결과와 반환 값을 살펴보세요.

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

--------- ---- ->End: 2

--------------->Start: 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);
	}
로그인 후 복사

또한 기본 메소드에 배치됩니다. 단지 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 루프에서 반환된 문자열 표시를 사용하여 결정합니다. 루프 종료 여부~

변환은 다음과 같습니다.

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 루프에 있는 원본 코드의 효과가 그렇지 않았음을 나타냅니다. refactored~

위의 작은 예는 유사한 코드를 리팩토링할 때 오류가 발생한 경험을 요약한 것입니다. 왜냐하면 실제 코드에서는 for에 있는 코드가 여러 번 반복되지만 for에 있는 코드는 부울 값을 반환해야 하기 때문입니다. 판단 조건에 따른 가치. 재구성 과정에서 먼저 test1(i)로 변경한 다음 test2(i)로 변경하고 마지막으로 test3(i)로 변경하여 재구성 전 효과를 얻었습니다.

위 내용은 PHP에서 반환이 발생하는 for 루프에 대한 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!