Tag: 副作用

Guava中的任何东西都类似于Functional Java的效果?

我知道纯函数式编程的目标之一是消除可变性,从而排除副作用。 但是让我们面对现实吧,即使存在所有的函数式编程库,Java也不是一种函数式语言。 事实上,似乎有些FP库知道并期待这一点。 例如,在Functional Java中,有Effect类。 在Jedi FP库中,有Command接口。 这允许您 – 除其他外 – 将类型安全的命令模式应用于Iterable元素,而不需要令人讨厌的for循环样板。 Command makeCall = new Command { public void execute(PhoneNumber p) { p.call(); } } List phoneList = … FunctionalPrimitives.forEach( phoneList, makeCall ); 所以问题是,番石榴中有类似的东西吗? 在接受澄清后接受回复 我正在开发一个框架 ,它可以在一定的环境下帮助解决大多数Java FP库中固有的“垂直问题”。 所以我实际上不会像上面所示那样编写代码示例:即,显式声明Command一个新类实现及其所有垂直噪声icky-ness,只是为了在声明后立即应用它。 我更多地考虑实际的命令模式,其中可能有几个可能的命令在其他地方声明,并且只有其中一个被传递到想要迭代地应用它的代码中。 此外,我的框架的目标是使创建function接口对象(函数,谓词,命令,其他简单的lambda)更加惯用,而不是简单地将垂直问题移动到其他地方。 我早就意识到这不在番石榴的范围内。 但是,由于其他FP库中有类似Command的接口,我只想知道Guava中是否存在模拟。 使用我的框架的更完整的代码示例可能是这样的: class Stuff { private final Stuff CALLS_TO = callsTo(Stuff.class); // […]