番石榴功能<>具有无效返回值?

时间:2010-10-22 01:28:03

标签: c# java functional-programming guava

Googe Guava for Java是否有一个带有void返回值的Function内部类,比如C#的action?我厌倦了制作一堆Function<Float, Integer>无意义的返回值。

2 个答案:

答案 0 :(得分:11)

您可以使用Function<Float, Void>并让它返回null,以使您的意图更加清晰。或者,如果需要,您也可以创建自己的抽象类来实现Function<T, Void>

但是不,Guava没有这样的东西......它也没有任何设计用于使用类似东西的方法,例如forEach类型方法。如果您正在使用Guava的方法,Function使用Function<Float, Void>或某些类似的......我不会真的建议这样做,因为这些方法不是为此设计的(即使你< em>可以与其中一些)。如果您使用自己的方法,我会说只需创建自己的界面{.1}}。

答案 1 :(得分:1)

对我来说,这似乎是矛盾的;你想使用一个函数(根据输入值计算一个值),但不想返回一个值(通常这样做的函数;它们应该如何将返回值传递给调用者)。

那么为什么不做呢

    for (Value v : values) {
        doYourThing(v);
    }

它比创建功能更紧凑,性能也更好。事实上,如果我正确理解你的用法,使用Function将没有任何好处,但只会添加相当多的样板代码。