隨着函數式編程的風靡,在代碼中
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了...