码迷,mamicode.com
首页 >  
搜索关键字:实用函数    ( 201个结果
8.2.1 策略设计模式(The strategy design pattern)
8.2.1 策略设计模式(The strategy design pattern)   在运行时,如果应用程序需要在几种算法之间,或一种算法的不同部分之间进行选择的话,策略模式是非常有用的。一种常见的情况是,当我们的应用程序需要执行的几个任务,只在很小的子任务上是不同的。使用策略模式,对于任务的公用部分,我们只要写一次,加上参数化,子任务(原始操作)作为它的参数值。图 8.1 显示了用面向对象...
分类:其他好文   时间:2014-12-02 11:51:50    阅读次数:134
8.1.4 在 F# 中使用函数列表
8.1.4 在 F# 中使用函数列表   首先,我们声明一个表示有关客户信息的类型;客户有很多属性,因此,用F# 的记录类型表示最自然的选择,我们在前一章已经看过。清单 8.4 显示了类型声明,和所创建样本客户的代码。   清单 8.4 Client 记录类型和样本值 (F# Interactive)   > type Client =   { Name : string; Inco...
分类:其他好文   时间:2014-12-02 10:37:42    阅读次数:190
8.1.3 在 C# 中使用函数集合
8.1.3 在 C# 中使用函数集合   考虑对客户进行贷款时,我们想要执行所有测试,并统计返回 true 的测试数(指高风险)。如果数为零个或一,程序就建议贷款。通常常的命令式解决方案是,声明一个变量,使用 foreach 语句枚举测试;在循环体内,执行测试,如果返回 true,变量就增加;使用 LINQ的扩展方法 Count,实现可以更优雅(清单 8.3)。   清单 8.3 执行测试...
分类:Windows程序   时间:2014-12-01 17:44:25    阅读次数:233
8.1.2 在 C# 中把行为表示成函数
8.1.2 在 C# 中把行为表示成函数   我们前面提到过,以面向对象的方式理解函数,就是把它认为是有一个单独方法的接口;从清单 8.1 的代码中,我们可以看到IClientTest 就是这样声明的。这样,测试可以很容易地表示成简单的函数;在 C# 中,我们可以使用lambda 函数来写测试:   Func isRiskyYearsInJob=    client => client....
分类:Windows程序   时间:2014-12-01 16:02:58    阅读次数:232
第八章 以行为为中心的程序设计
第八章 以行为为中心的程序设计 本章介绍■ 用函数表示行为■ 扩展程序行为■ 处理函数和闭包■ 用决策树测试客户端在第七章,我们讨论了以数据中心的应用程序,知道了,设计函数式程序的第一步是定义相关的数据结构。还有一种情况,数据结构中包含了某种形式的行为,既可能是用户调用的命令,也可能是程序在某一点执行的任务。对这种情况,我们想统一处理,而不是为每一种行为的功能进行硬编码,因此,在数据结构的设计上,...
分类:其他好文   时间:2014-11-28 18:20:54    阅读次数:200
7.5.1.1复合设计模式(THE COMPOSITE DESIGN PATTERN)
7.5.1.1复合设计模式(THE COMPOSITE DESIGN PATTERN)   复合模式可以把几个对象组合成一个复合对象,使用这种的方法与使用基本对象一样。图 7.6 显示了面向对象实现这种模式的通常方法。 图 7.6CompositeComponent 是包含其他组件集合的类;它继承自 AbstractComponent,因此,能够使用基本组件的地方,也一样可以使用...
分类:其他好文   时间:2014-11-27 18:32:50    阅读次数:213
7.5.1 用结构模式表示数据
7.5.1 用结构模式表示数据   如果我们根据数据结构,而不是对象来讨论程序的话,我们可以说,结构模式是描述设计数据结构常见和行之有效的方法;设计模式是更为具体,说明了如何在面向对象语言中,使用对象实现这些结构。在本章,我们会看到用函数式表示数据的方法。第一种表示方法,我们使用简单的记录列表,用任何一种语言来写都很容易,而第二种表示方法(使用差别联合)更有意义。我们先看一下第一种模式,复合模...
分类:其他好文   时间:2014-11-27 16:25:29    阅读次数:212
7.4.2 使用聚合操作进行计算
7.4.2 使用聚合操作进行计算   聚合背后的思想是,在整个操作过程中,传递的某些状态能够被保持。我们首先初始状态,用给定的处理函数,为文档中的每个部分,计算出一个新的状态。这种思想反映在函数的签名中:   val aggregateDocument :   ('a -> DocumentPart -> 'a)-> 'a -> DocumentPart –> 'a   我们之所以使...
分类:其他好文   时间:2014-11-27 12:48:53    阅读次数:181
7.5 面向对象的表示方法
7.5 面向对象的表示方法   标准的设计模式可以分为三组:创建、结构和行为(creational, structural, and behavioral)。在这一节,我们将讨论后两组中的几种模式,它们类似于在本章前面用F# 使用的结构。模式的函数式版本不同于面向对象,因为面向对象编程把重点放在添加新类型,而函数编程的重点放在添加新函数,但结构非常相似。   提示   本节假定你有一点...
分类:其他好文   时间:2014-11-27 12:47:24    阅读次数:123
7.4.1 用映射操作进行更新
7.4.1 用映射操作进行更新   尽管这个操作类似于映射,但是,真的实现,还需要作出重要的设计选择。分栏部分可能递归地包含多个部分,所以,文档是一种树形结构,我们需要决定以哪种顺序处理节点: 1、从根部开始,对所有嵌套在其中的部分,递归地调用映射操作。 2、从叶子开始,首先处理嵌套最深的部分,然后,返回到包含它们的部分。 在处理列表时,顺序无关紧要,但是,对于树形结构,却是相当重要的。...
分类:其他好文   时间:2014-11-27 10:51:04    阅读次数:226
201条   上一页 1 ... 17 18 19 20 21 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!