2017-07-17 42 views
5

我有一個凹槽代碼(有一些Java風格元素)如何簡化常規循環代碼

dates.forEach new Consumer<Period>() { 
    @Override 
    void accept(Period period) { 
     println period 
    } 
} 

是否有可能做的更簡單?

我想有像

dates.forEach println 

dates.forEach println date 

回答

10

只需使用

dates.each { println it } 
+1

另一種方法是:'dates.each System.out。&println' - 方法引用是閉包。 – cjstehno

2

Groovy閉包可以填寫任何部位,其中要求對單一方法接口(與Java lambda表現相同)。所以你希望的代碼已經非常接近實際工作的代碼:

groovy:000> [1,2,3].forEach{ println it } 
1 
2 
3 
===> null