随着函数式编程的风靡,在代码中
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了...
本文深入探讨了函数式编程中forEach的使用技巧,包括在Java和JavaScript中如何巧妙地利用return和throw实现continue和break的效果,为代码优化提供新思路。
1584

被折叠的 条评论
为什么被折叠?



