7.1.1.1 处理记录
来源:互联网 发布:java周末班 编辑:程序博客网 时间:2024/06/05 17:34
7.1.1.1 处理记录
我们在本章后面还要用到Rect 类型,有两个简单的函数来处理矩形。第一个函数是缩小矩形,通过从每一条边上减去指定的宽度和高度,第二个函数是把我们的矩形表示形式转换成 System.Drawing 命名空间中的 RectangleF 类。清单 7.2 中是这两个函数。
清单 7.2 处理矩形的函数 (F# Interactive)
> open System.Drawing;;
> let deflate(original, wspace, hspace)=
{ Left = original.Left+ wspace | 创建、返回缩小的矩形
Top = original.Top + hspace |
Width = original.Width - (2.0f * wspace) |
Height = original.Height - (2.0f * hspace) };; |
val deflate : Rect * float32 *float32 –> Rect [1]
> let toRectangleF(original) =
RectangleF(original.Left,original.Top, | 返回RectangleF 类的实例
original.Width, original.Height);; |
val toRectangleF : Rect –>RectangleF [2]
> { Left = 0.0f; Top = 0.0f;
Width =100.0f; Height = 100.0f; };;
val it : Rectangle = (...)
> deflate(it, 20.0f, 10.0f);; [3]
val it : Rectangle = { Left = 20.0f; Top =10.0f;
Width = 60.0f; Height = 80.0f;}
从类型签名[1][2]可以发现,F# 编译器正确推断参数 original 的类型是 Rect。在函数体中,编译器使用字段名进行访问,如果我们有两个记录类型,并且有些字段名是相同的,那么,就必须显式指定其类型。我们可以使用类型批注,在函数声明中写上 (original:Rect)。通常,当使用 F# Interactive 时,可以立即测试函数[3]。当创建值时,我们没有使用let 绑定,而是在后面使用自动创建的 it 值来访问的。
总结一下,F# 的记录是不可变的,可以使用 {x with ...} 构造方便地进行复制。在 C# 中,如果我们像这样设计数据结构,可能要使用类,偶尔会用到结构,但肯定要用特殊的方法。在下一节,我们将介绍如何实现。
- 7.1.1.1 处理记录
- 处理记录
- 版务处理记录
- 处理冗余记录解决方案
- 处理表重复记录
- 处理表重复记录
- 记录分页处理
- shell处理字符串记录
- SQL重复记录处理
- SQL重复记录处理
- 处理表重复记录
- 重复记录和处理
- 重复记录处理
- SQL重复记录处理
- ORACLE重复记录处理
- 处理表重复记录
- SQL重复记录处理
- 重复记录和处理
- vim python
- spring事务管理几种方式(转)
- Unity3d运行时程序创建NGUI图集 - 转载
- Vision引擎中效果图形-雾图形介绍
- android分页查询获取系统联系人信息
- 7.1.1.1 处理记录
- 公司新问题又出现了
- 联想笔记本电脑蓝牙没有“发送文件”和“接受文件”选项的解决方法
- AVL树的平衡过程
- poj 1486 Sorting Slides 二分匹配唯一性判定
- Android UI设计原则
- 关于oracle插入clob数据类型的问题
- 《Linux内核设计与实现》——虚拟文件系统
- ECharts使用例子