【開發技巧】API使用技巧之forEach

隨着函數式編程的風靡,在代碼中forEach的影子隨處可見。
下面我們來看一下它的使用技巧

talk is cheap, show me the code.

Java中的forEach

  • forEach遍歷

    Arrays.asList(1,2,3,4,5).forEach(i -> {
       System.out.println("number " + i);
    });
    

    控制檯輸出

    number 1
    number 2
    number 3
    number 4
    number 5
    
  • forEach遍歷 + continue
    需要注意的是, forEach中是不能使用continue關鍵字的,但是可以使用return來替代
    因爲forEach(Consumer<? super T> action)參數是一個Consumer的函數式接口,
    return並不是結束的forEach,而是結束的當前lambda的方法體,
    所以在這裏可以巧妙的利用return來達到continue的效果。

    Arrays.asList(1,2,3,4,5).forEach(i -> {
    	if (i == 3) {
    		return;
    	}
    	System.out.println("number " + i);
    });
    

    控制檯輸出

    number 1
    number 2
    number 4
    number 5
    
  • forEach遍歷 + break
    同樣,forEach中也不能使用break關鍵字。
    要在forEach中實現break的效果,可以通過throw拋異常來實現。

    Arrays.asList(1,2,3,4,5).forEach(i -> {
    	if (i == 3) {
    		throw new RuntimeException("碰到3了...");
    	}
    	System.out.println("number " + i);
    });
    

    控制檯輸出

    number 1
    number 2
    Exception in thread "main" java.lang.RuntimeException: 碰到3...
    

JavaScript中的forEach

  • forEach遍歷

    [1,2,3,4,5].forEach(i => console.log('number', i))
    

    控制檯輸出

    number 1
    number 2
    number 3
    number 4
    number 5
    
  • forEach遍歷 + continue
    Java中一樣,可以使用return來實現continue的效果。

    [1,2,3,4,5].forEach(i => {
    	if(i == 3) {
    		return
    	}
    	console.log('number', i)
    })
    

    控制檯輸出

    number 1
    number 2
    number 4
    number 5
    
  • forEach遍歷 + break
    Java中一樣,可以使用throw拋異常,來實現break的效果。

    [1,2,3,4,5].forEach(i => {
    	if (i == 3) {
    		throw new Error("碰到3了...")
    	}
    	console.log('number', i)
    })
    

    控制檯輸出

    number 1
    number 2
    Error: 碰到3...
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章