2017-07-17 51 views
5

Mam kod rowek (z elementami stylu java)Jak uprościć kod Groovy pętli

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

Czy można to zrobić prościej?

Chciałbym mieć coś takiego

dates.forEach println 

lub

dates.forEach println date 

Odpowiedz

10

wystarczy użyć

dates.each { println it } 
+1

Alternatywnym rozwiązaniem byłoby: 'dates.each System.out. & Println' - odwołania do metod są to zamknięcia. – cjstehno

2

Groovy zamknięcia może wypełnić każdą plamkę, gdzie pojedynczy interfejs metoda jest wniosek (tak jak zachowuje się Java lambda). Kod, o który prosiłeś, jest już bardzo zbliżony do tego, co faktycznie działa:

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