WEB开发网
开发学院软件开发Java Java 语言中的函数编程 阅读

Java 语言中的函数编程

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 通过首先观察所使用的 Apache Functor 库中的三个标准仿函数,开始分析和理解这段代码,Java 语言中的函数编程(10),UnaryCompositeBinaryFunction 仿函数取一个二元函数和两个一元函数作为输入,首先计算后两个函数,因为 calcActualDiscoun

通过首先观察所使用的 Apache Functor 库中的三个标准仿函数,开始分析和理解这段代码。

UnaryCompositeBinaryFunction 仿函数取一个二元函数和两个一元函数作为输入。首先计算后两个函数,它们的输出作为输入传递给二元函数。在清单 4 中对二元合成使用这个仿函数两次。

Constant 仿函数的计算总是返回一个常量值(即在其构造时输入的值),不管以后任何计算消息中传递给它的参数是什么值。在清单 4 中,变量 cap 的类型为 Constant 并总是返回最大折扣数量。

Identity 仿函数只是返回作为 evaluate 消息的输入参数传递给它的这个对象作为输出。清单 4 显示 Identity 仿函数的一个实例,该仿函数是在创建 calcDiscountedPrice 时作为一个一元仿函数创建和传递的。同时在清单 4 中, evaluate 消息包含标签价格作为其参数,这样 Identity 仿函数就返回标签价格作为输出。

第一个二元合成在用计算 calcDiscount (通过对标签价格直接应用折扣率)和 cap 的 UnaryCompositeBinaryFunction 设置变量 calcActualDiscount 时是可见的。这两个一元仿函数计算的输出传递给称为 Min 的内置二元仿函数,它比较这两者并返回其中最小的值。

这个例子显示了定制类 BinaryFunctionUnaryFunction 。这个类适配一个二元仿函数,使它像一元仿函数的接口。就是说,当这个类接收一个带有一个参数的 evaluate 消息时,它在内部发送 (向其封装的二元函数)一个 evaluate 消息,它的两个参数是作为输入接收的同一个对象。因为 calcActualDiscount 是二元函数,所以通过类型为 BinaryFunctionUnaryFunction 的 calcActualDiscountAsUnary 实例将它包装到一个一元仿函数接口中。很快就可以看到包装 calcActualDiscount 为一元仿函数的理由。

上一页  5 6 7 8 9 10 

Tags:Java 函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接