簡體   English   中英

有什么理由使用compose()而不是lambda表達式?

[英]Any reason for using compose() instead of lambda expressions?

我正在將compose()默認方法的使用與其等效的lambda表達式進行比較,但找不到任何偏愛前者的原因。

也許原因與表現代碼或功能的編程風格,如指出這里

但是,比較兩種方法來解決問題如何進行功能組合? 我只看到使用compose()而不是lambda表達式的缺點。

根據接受的答案使用compose()第一種方法:

Function<Person, Address> personToAddress = Person::getAddress;
Function<Address, String> addressToCountry = Address::getCountry;
Function<Person, String> toCountry = addressToCountry.compose(personToAddress);

使用lambda表達式的第二種方法:

Function<Person, String> toCountry = p -> p.getAddress().getCountry();

為什么我偏愛第二個? 首先,它不那么冗長。 其次,它不需要顯式輔助變量personToAddressaddressToCountry

因此,是否有任何理由使用compose()而不是顯式使用lambda?

原因之一是如果您不在同一段代碼中創建一個甚至兩個函數,而是從其他地方傳遞它們。 然后,您可以編寫一個在給定函數上調用apply()的lambda,或使用compose() ,這可能會更清潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM