Optional
'un akıcı api'sini kullanmak ve buna iki Consumer
s uygulamak istiyorum. Geçici değişkende saklamak zorunda kalmadan,İsteğe bağlı olarak nasıl göz atılır?
Optional.ofNullable(key)
.map(Person::get)
.ifPresent(this::printName)
.ifPresent(this::printAddress); // not compiling, because ifPresent is void
Nasıl bir Optional
için Consumer
ler birkaç uygularım:
böyle bir şey hakkında hayal ediyorum? Alternatif
ofNullable(key)
.map(Person::get)
.ifPresent(x -> {printName(x); printAddress(x);});
: Sadece tek lambda
içine her iki etkiyi birleştiren ediyorum, çok eleman görünmeyebilir bu iken
ofNullable(key)
.map(Person::get)
.map(x -> {printName(x);return x;})
.map(x -> {printAddress(x);return x;});
, ben yan etkiler için 'map' kullanarak sanmıyorum iyi tarzıdır. Kişisel olarak, ifPresent (x -> {doA (x); doB (x);}) 'i kullanmayı tercih ederim. –
@RobinTopper Bazen bunu yaparlar, çünkü kendi sorularına bir cevap bulmaya çalışmışlardır. birini bulmayı başaramadılar ve bir kez bulduklarında, bir sonraki araştırmacının cevabı bulduğundan emin olmak istiyorlar. – Esko
Buradaki neden, Opsiyonel aslında tembel olarak değerlendirilen bir monad (Java_'de _yes) ve sadece son değerin iç boru hattının işlenmesinden sonra - başlangıçta bir değer yoksa, varsayılan davranışın başlatılmasıdır. Son değeri elde etmek için hangi yönteme bağlı olarak değişir. – Esko