먼저 다음 메소드의 인쇄 결과와 반환 값을 살펴보세요.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!