码迷,mamicode.com
首页 >  
搜索关键字:实用函数    ( 201个结果
11.4.2.1 使用延迟值进行缓存
11.4.2.1 使用延迟值进行缓存   应用程序中最重要的部分是,应用程序启动时执行的代码,找到指定目录中的所有文件,并创建有关每个文件信息的数组;这些信息包含文件名,和为了展示调整大小而计算的延迟值。清单 11.21 是为此而创建的数据结构。   清单 11.21 创建有关图片信息的集合 (F#) open System.IO open System.Drawing   t...
分类:其他好文   时间:2015-01-16 11:20:14    阅读次数:132
11.4.1 无穷列表
11.4.1 无穷列表   这一节的标题听起来可能有点奇怪(或疯狂),所以,需要解释一下。函数式列表是我们经常使用的一种数据结构。如果我们想要表示逻辑上无穷的列表,例如,所有质数的列表。当然,我们不可能用到所有的数字,只是像这样使用数据结构,而不必考虑长度。如果列表是无穷的,我们就能够访问尽可能多的数字,只要我们需要。 除了数学上的挑战以外,同样的概念在许多主流编程中也是有用的。当我们在第四...
分类:其他好文   时间:2015-01-16 10:11:07    阅读次数:164
11.4.2 在照片浏览器中缓存值
11.4.2 在照片浏览器中缓存值   下面的示例,我们将写一个应用程序,找出指定文件夹中所有照片,并以列表形式显示;当用户选择一张照片,应用程序调整大小,在窗口中显示。(为了简便起见,我们不会允许用户调整窗口大小)。当我们展示(draw)照片时,将需要调整其大小以适合屏幕,然后,调整后的尺寸显示图像。 很明显,在应用程序启动时,我们不想调整所有照片的大小:对于照片很多的情况,需要花费大量的...
分类:其他好文   时间:2015-01-16 10:09:12    阅读次数:148
11.4 实用延迟值
11.4 实用延迟值   如果我们有一系列计算,可能要花很长时间,并且只在需要时才计算这个(些)值,这时,延迟值就很有用了。在这种情况下,可以得益于缓存,我们在上一节已经用 C# 实现过,把延迟值作为缓存,在需要时才填充。 延迟值的另一个重要用途,是表达一些概念时,很难以其他方式编程。我们将先Haskell 提供的几个例子,讨论有关延迟值的实际使用;Haskell 在每一处都使用延迟计算,这...
分类:其他好文   时间:2015-01-15 12:57:19    阅读次数:169
11.3.5 为 C# 实现延迟值
11.3.5 为 C# 实现延迟值   在 11.3.3 节,我们使用函数来表示 C# 中的延迟计算。我们刚才在 F# 中探讨了Lazy 类型,它为计算过的值,添加了缓存功能。从Visual Studio 2010 开始,在核心的 .NET 库下的System.Lazy 就有了这种类型,因此,我们不必自己实现。 清单 11.18 是简化的 Lazy 类。代码在许多方面做了简化,它不是线程安...
分类:Windows程序   时间:2015-01-14 17:58:28    阅读次数:224
11.3.4 F# 中的延迟值
11.3.4 F# 中的延迟值   F# 中的延迟值(lazy value)是通过延迟计算表示的,就是说,只有在值需要时才进行计算。在上一节,我们用 C# 函数实现了类似的功能,而延迟值自动只计算一次,并能记住结果。 探索此功能的最佳方法是在 F# Interactive 中进行。清单 11.16 用脚本进行了演示。 [ 清单编号的错误再次出现了. ] 清单 11.16 介绍延迟值 ...
分类:其他好文   时间:2015-01-14 16:57:30    阅读次数:220
11.3.4.1 实现或和延迟或
11.3.4.1 实现或和延迟或   因为我们要实现运算符,需要将其定义为真正的运算符,而不只是通常的函数。就像在第六章学过的,可以在 F# 中引入自己的运算符,清单 11.17 显示了两种不同的或运算符。   [ 清单序号还有问题。从 11.14 开始,就变成了 11.17 了。 ] 清单 11.17 比较提前和延迟的或运算符 (F# Interactive) l...
分类:其他好文   时间:2015-01-14 16:52:08    阅读次数:187
11.3.2计算策略的比较
11.3.2计算策略的比较   [ evaluation、computation、calculation,在第二章,是后两个计算放在一起,让人搞不清准确的含义;现在倒好,出现了三个计算,又该如何体会呢? 据说,从左到右,是从粗略到精确的过度,即,前面的强调估算,后面的强调演算。 能体会出来吗?语言不同,表达真的不同。 因此,计算机就选了一个中间值,既不强调粗,也不强调精;恰恰表明,既强...
分类:其他好文   时间:2015-01-12 16:43:33    阅读次数:153
11.3.3 用函数模拟延迟计算
11.3.3 用函数模拟延迟计算   在F# 和C# 中计算顺序是提前的:作为给函数参数使用的表达式,在函数自身开始执行之前就计算好了。在C# 和F# 中,我们可以使用函数值模拟延迟计算,另外,F# 甚至有一个专门的关键字,支持延迟计算。 但首先,对于提前计算规则有一个例外,你肯定知道,并经常使用,但只是因为太常用,反而可能没有意识到它的特别。有些特定的C# 运算符,比如,逻辑或(||)、逻...
分类:其他好文   时间:2015-01-12 16:33:35    阅读次数:189
11.3.1.2 Haskell 的延迟计算策略
11.3.1.2 Haskell 的延迟计算策略   在延迟计算策略(lazy evaluation strategy)中,函数的参数值,在函数调用时不会计算,直到后来用到这个值时才计算。我们回到前面的例子:   TestAndCalculate(Calculate(10));   在这里,Haskell 直接跳转到TestAndCalculate 函数主体。Haskell 会记住参...
分类:其他好文   时间:2015-01-12 11:36:32    阅读次数:160
201条   上一页 1 ... 9 10 11 12 13 ... 21 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!