您的位置:首页 > 编程语言 > Java开发

java.next:功能编码风格!

2014-05-14 18:03 162 查看
当垃圾收集成为主流,它消除了整个类别的 调试困难问题,使运行管理过程中的 复杂和容易出错的开发商。函数式编程的目的是做 相同的算法,你写你可以工作在更高的抽象层次 在运行时执行复杂的 优化。

该java.next语言不占用必须和功能之间的语言 谱相同的位置,但表现出功能 特征、成语。在函数式编程技术 明确的语言,但有时使用不同的术语相同的 功能的概念,使得它很难看到相似之处。在这 分期付款,我比较功能的编码风格在Scala中,常规的,和 Clojure和讨论他们的利益。


命令处理

我会从一个共同的问题和必要的解决方案。假设 给你一个名单,其中包括一个单一的 字符。你被要求返回的名称以逗号分隔的字符串不包含单 字母的名字,每个名字的大写。 Java代码来实现这个算法,如清单1所示。

清单1。命令处理

public class TheCompanyProcess {
public String cleanNames(List<String> listOfNames) {
StringBuilder result = new StringBuilder();
for(int i = 0; i < listOfNames.size(); i++) {
if (listOfNames.get(i).length() > 1) {
result.append(capitalizeString(listOfNames.get(i))).append(",");
}
}
return result.substring(0, result.length() - 1).toString();
}

public String capitalizeString(String s) {
return s.substring(0, 1).toUpperCase() + s.substring(1, s.length());
}
}


因为你必须处理的整个清单,对清单1中的 问题攻击的最简单的方法是在一个必须循环。每一个名字,我看看它的长度大于1, 然后(如果它大于1)添加到大写的名字
结果
随着一个逗号,字符串。该
姓的最后的字符串不能包含逗号,所以我带它 了最终的返回值。

在命令式编程,你可以执行的操作在一个低水平的 。在
cleannames()
方法清单1完成三项任务:我,我滤波器消除单字符列表,变换利用每个名字的名单,然后转换本表为一个字符串。在祈使
语言,我被迫使用相同的底层机制(在 列表的迭代)的所有三个任务。功能性语言识别,过滤, 变换,转换是常见的操作,所以他们给你一个方法来 攻击问题从不同的角度。


功能处理

函数式编程语言的分类问题 命令式语言不同。滤波,变换,并将逻辑 类别出现功能。这些功能的实现 低级变换和依靠开发者写一个函数,作为参数传递自定义 函数的行为。我 可以概念化的问题清单1在 伪代码为:

listOfEmps -> filter(x.length > 1) -> transform(x.capitalize) ->
convert(x, y -> x + "," + y)
功能性语言,你可以不用担心这个概念性的解决方案 实施细节模型。

本文由重庆上弦科技有限公司(翻译而来)

上弦科技官网  OA办公系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息