首頁  >  文章  >  後端開發  >  php中for迴圈遇上return的範例程式碼分享

php中for迴圈遇上return的範例程式碼分享

黄舟
黄舟原創
2017-06-25 10:19:483026瀏覽


先看以下方法的列印結果以及回傳值:

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裡return一個值的話相當於退出循環

 

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循環裡直接調的重構的方法,印出結果:

-------------->開始:1

-------------->結束:1

-------------->開始:2

-------------->結束:2

-------------->開始:3

-------------->開始:4

-------------->結束:4

-------------->開始:5

-------------->結束:5

傳回值:true

 

這說明,test1(i)方法用return;語句試圖走到i=3的時候中斷; 但是循環還是走完了。

 

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裡呼叫一個有boolean回傳值的方法,會讓方法還沒走到i=3就斷掉,回傳一個boolean值。

 

3)在for迴圈裡需要依照條件return一個boolean值時。 for迴圈裡面的程式碼若需要重構成一個方法時,應該是有回傳值的,但這個回傳值不能是boolean,我們不妨用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

#-------------->結束:2

-------------->開始:3

#回傳值:true

 

說明達到了最初未對for循環裡面的程式碼進行重構時的效果~  

 

以上的小例子是我在對類似程式碼進行重構時報錯的經驗小結,因為實際程式碼裡,for裡面的程式碼重複了好幾次,但是又因為for裡面的程式碼需要根據判斷條件return一個boolean值。在重構的過程中,我先改成test1(i),再改成test2(i), 最後改成test3(i)才該對,達到未重構時的效果。

以上是php中for迴圈遇上return的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn