7.5 面向对象的表示方法
标准的设计模式可以分为三组:创建、结构和行为(creational, structural, and behavioral)。在这一节,我们将讨论后两组中的几种模式,它们类似于在本章前面用F# 使用的结构。模式的函数式版本不同于面向对象,因为面向对象编程把重点放在添加新类型,而函数编程的重点放在添加新函数,但结构非常相似。
提示
本节假定你有一点...
分类:
其他好文 时间:
2014-11-27 12:47:24
阅读次数:
123
7.4.1 用映射操作进行更新
尽管这个操作类似于映射,但是,真的实现,还需要作出重要的设计选择。分栏部分可能递归地包含多个部分,所以,文档是一种树形结构,我们需要决定以哪种顺序处理节点:
1、从根部开始,对所有嵌套在其中的部分,递归地调用映射操作。
2、从叶子开始,首先处理嵌套最深的部分,然后,返回到包含它们的部分。
在处理列表时,顺序无关紧要,但是,对于树形结构,却是相当重要的。...
分类:
其他好文 时间:
2014-11-27 10:51:04
阅读次数:
226
7.4 写操作
处理文档,可能有多种操作;我们可以把文档中的所有标题改成大写,或者,把多列文本合并到一个列。可以发现,所有这些操作有一些共同之处,它们与前一章的映射操作之间有相似性;如同映射一样,每个操作都对文档进行检查,再对特定部分执行某种转换,最后,返回新的文档。
另一种操作可能只返回一个不同类型的值,比如,可以实现这样的函数,统计文档中的字数,或将文档的全部文本作为字符串都返回。这...
分类:
其他好文 时间:
2014-11-26 16:39:36
阅读次数:
117
7.3.2 用 XML 表示文档
XML 格式非常流行,非常适合于保存分层次的数据,比如,上一节的文档。如何处理 XML,对于许多实际应用非常重要,因此,在这一节,我们要扩展我们的应用程序,以支持从 XML 文件加载文档。我们将使用.NET 3.5 的 LINQ to XMLAPI 完成大部分的困难工作,自己再写另外的 XML 解析器没有任何意义。LINQto XML 是函数概念应用于主流...
分类:
其他好文 时间:
2014-11-26 11:18:35
阅读次数:
210
2,Scala函数特性编程实战当函数不带参数的使用,我们调用的时候可以省略括号:接下来定义一个匿名函数、调用并运行:在Scala总函数式一等公民,所以我们可以把函数付给一个常:另外一个特性是Scala函数编程的柯里化,这个特性允许函数定义的时候有两个括号: 而这种代码在Spark的源码中是非常常见的...
分类:
其他好文 时间:
2014-11-25 00:09:08
阅读次数:
239
7.1 函数式数据结构
用函数编程,程序处理的数据总是保存在数据结构中。数据结构和对象之间的区别在于,数据结构公开了表示数据(从名字就可以知道) 的结构;知道了数据的结构便于写处理的代码,但要到第九章才讨论,F# 还提供了一种封装结构的方法,如同面向对象编程,当我们想从库中导出 F# 数据结构,或者用于 C#。正如我们在第二章讨论函数概念时所说的,这些数据结构是不可变的。
在这一章,我们...
分类:
其他好文 时间:
2014-11-21 16:16:27
阅读次数:
131
6.8.1 映射、筛选和折叠(Mapping,filtering, and folding)
映射、筛选和折叠是函数编程中最常见的操作;在处理函数式列表时,我们已经用到过,但它们还支持所有其他的集合类型(我们将在第十和十二章讨论其中一部分);这些操作并不限于集合,所有的操作都可用于处理选项类型。
清单 6.25 显示了映射、筛选和折叠函数的签名类型,清单中包括了我们尚未讨论过的Optio...
分类:
移动开发 时间:
2014-11-20 12:09:11
阅读次数:
183
公司项目采用Ext,结果本人发现入门不易!尤其是采用JavaScript编写面向对象程序,经常使用jQuery的知道,jQuery是面向函数编程的,所以很容易入门。然而,Ext是面向对象的,那么,当你想要自定义Ext组件的时候,...
分类:
编程语言 时间:
2014-11-16 16:05:46
阅读次数:
221
在函数编程中经常用到闭包。闭包是什么,它是怎么产生的及用来解决什么问题呢。给出字面的定义先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个参数a, 内层函数依旧传入一个参数b, 内层函数使用a和b, 最后返回内层函数)。这个从字面上很难理...
分类:
编程语言 时间:
2014-11-05 19:16:06
阅读次数:
390
algorithm意为"演算法",是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。编程语言C++类别C++标准库头文件#include 命名空间using namespace std; 目录?不修改内容的序列操作:?修改内容的序列操作:?划分操作:?排序操作...
分类:
编程语言 时间:
2014-11-05 06:59:37
阅读次数:
321