1
我将compose()
默认方法的使用与其等价的lambda表达式进行比较,找不到任何理由偏好前者。使用compose()而不是lambda表达式的任何理由?
可能的原因与代码表现或功能的编程风格,如指出here
然而,这两种方法的比较来解决这个问题How to do function composition?我只看到缺点,使用compose()
代替lambda表达式。根据accepted answer与compose()
1的方法:
Function<Person, String> toCountry = p -> p.getAddress().getCountry();
为什么我更喜欢第二个:
Function<Person, Address> personToAddress = Person::getAddress;
Function<Address, String> addressToCountry = Address::getCountry;
Function<Person, String> toCountry = addressToCountry.compose(personToAddress);
与lambda表达式第二个做法?首先,它不那么冗长。其次,它不需要明确的辅助变量personToAddress
和addressToCountry
。
那么,是否有任何理由使用compose()
而不是明确使用lambda?
第二个是合适的,当两个功能已经传递给你。即它们已经存在。 –
在你简单的例子中,你知道如何从一个人获得地址以及如何从地址获取国家。但是如果你不知道如何获得地址呢?如果'Person'有'List
'而且你不知道你被请求了哪一个呢?然后,您可以从客户端调用请求映射器并撰写答案。 –只是挑剔,本地变量不是严格要求。您可以使用转换将方法引用链接到'Function'类型 –