【开发技巧】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 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...
    

你可能感兴趣的:(开发技巧)