Birçok lambda'lar formunu bu kadar sık böyle bunun için bir yöntem yazdım bunuFonksiyonlar tüketicilerin internetten dönüştürme
t -> {
// do something to t
return t;
}
alır.
static <T> Function<T, T> consumeThenReturn(Consumer<T> consumer) {
return t -> {
consumer.accept(t);
return t;
};
}
Bu beni böyle gerçekten güzel şeyler yapmak sağlar: Kendi yönteme dayanmadan böyle dönüşümleri yapmanın başka bir yolu
IntStream.rangeClosed('A', 'Z')
.mapToObj(a -> (char) a)
.collect(Collectors.collectingAndThen(Collectors.toList(), consumeThenReturn(Collections::shuffle)))
.forEach(System.out::print);
var mı? Kaçırdığım yeni API'larda, yöntemimi gereksiz kılan bir şey var mı?
Orada olduğunu sanmıyorum: örneğin Collectors.toList() koduna bakın, bunu yapar (sol, sağ) -> {left.addAll (right); sola dönün; } '. Bu onların argümanını mutasyona sokan metotların problemidir ... (yan not, '' Fonksiyon' yerine ' 'UnaryOperator' ı kullanabilirsiniz –
Tunaki
Fonksiyonunuzu ['tee'] olarak yeniden adlandırabilirim (https: //en.wikipedia .org/wiki/Tee_ (komut)). – dasblinkenlight
Her şey çoktan söylendi, ama zaten bunu yapan bir şey üzerinde çalışıyorum. https://github.com/TouK/ThrowingFunction/ herhangi bir giriş takdir edilir –