在第三章,你第一次接触了记录类型,我并没有讨论如何更新它们的字段。这是因为,默认情况下记录类型是不可更改的。F#提供了特殊的语法,以允许更新记录类型里的字段,在记录类型的字段前面使用关键字mutable。我必须强调,这一操作改变的内容是记录的字段,而非记录本身。

#light
type Couple = { her : string ; mutable him : string }

let theCouple = { her = "Elizabeth Taylor " ; him = "Nicky Hilton" }

let print o = printf "%A\r\n" o

let changeCouple() =
     print theCouple;
     theCouple.him <- "Michael Wilding";
     print theCouple;
     theCouple.him <- "Michael Todd";
     print theCouple;
     theCouple.him <- "Eddie Fisher";
     print theCouple;、

theCouple.him <- "Richard Burton";
     print theCouple;
     theCouple.him <- "Richard Burton";
     print theCouple;
     theCouple.him <- "John Warner";
     print theCouple;
     theCouple.him <- "Larry Fortensky";
     print theCouple
changeCouple()
执行结果:
{her = "Elizabeth Taylor "; him = "Nicky Hilton"}
{her = "Elizabeth Taylor "; him = "Michael Wilding"}
{her = "Elizabeth Taylor "; him = "Michael Todd"}
{her = "Elizabeth Taylor "; him = "Eddie Fisher"}
{her = "Elizabeth Taylor "; him = "Richard Burton"}
{her = "Elizabeth Taylor "; him = "Richard Burton"}
{her = "Elizabeth Taylor "; him = "John Warner"}
{her = "Elizabeth Taylor "; him = "Larry Fortensky"}

这个例子显示一个mutable记录的动作。一个类型,couple,定义其字段him是一个mutable但字段her不是。接下来,实例化一个couple,然后改变him的值多次,每次都输出结果。请注意,mutable关键字并没有应用于每个字段,因此,任何尝试更新一个非mutable的字段的动作都会导致一个编译错误,如下所示。

#light
theCouple.her <- "Sybil Williams";
print_any theCouple
如果你编译这段代码,你将得到以下错误消息:
prog.fs(2,4): error: FS0005: This field is not mutable

转载于:https://www.cnblogs.com/IBBC/archive/2011/12/08/2280577.html

F#基础教程 定义mutable记录类型相关推荐

  1. F#基础教程 大纲

    各位大虾,原文的pdf文档在这里下载. 第一章 简介 什么是函数式编程 为什么函数式编程很重要 什么是F# 谁在使用F# 谁需要这本书 下一步是什么 第二章 如何获取.安装和使用F# 获取F# 在wi ...

  2. F#基础教程 unit类型

    前言: 正如你在第三章看到的,你可以使用F#作为纯函数编程.然而有些问题,最明显的是I/O,没有状态的改变几乎是不可能的.F#不要求你的程序是一个无状态的模式.它允许你使用可变(mutable)标识符 ...

  3. F#基础教程 ref类型

    ref类型是在一个程序里使用可变状态的一种简单的方式,也就是说,可以随时间改变的值.ref类型仅仅是一个纪录类型的单一可变字段,在F#库中.访问和更新字段的一些操作符的定义都很简单.F#的ref类型定 ...

  4. F#基础教程 列表

    F#中的列表是F#内置的简单集合类型.一个F#列表可以为空,用方括号代表([]),也可以是一组值的串联.你可以使用F#内置的操作符(::)串联一个列表.下面的例子给出一些示例,开始第一行为空列表,第二 ...

  5. 【基础教程】Python整数类型(int)详解

    整数就是没有小数部分的数字,Python 中的整数包括正整数.0 和负整数. 有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同 ...

  6. 【基础教程】Python复数类型(complex)详解

    复数(Complex)是 Python 的内置类型,直接书写即可.换句话说,Python 语言本身就支持复数,而不依赖于标准库或者第三方库. 复数由实部(real)和虚部(imag)构成,在 Pyth ...

  7. Oracle PL/SQL开发基础(第十六弹:记录类型)

    记录类型有些类似于C语言的结构或者,使用记录可以一次性处理多个类型的值. 记录类型简介 记录类型给了程序员自定义程序结构的能力,这种程序结构是指变量类型的集合,这些变量被组织在一起同一进行管理,是的记 ...

  8. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  9. plsql(轻量版)_记录类型1

    定义变量,变量类型的,这个是可变的 这里涉及到一个概念叫记录类型,记录类型是把逻辑相关的数据作为一个单元存储起来,称作一个record,其作用是存储互不相同但逻辑相关的信息,这个叫记录类型,这个是以什 ...

最新文章

  1. Centos定时自动执行脚本
  2. 精选 GitHub 值得收藏的100个前端项目
  3. JS不同类型之间运算与转换
  4. [转]Angular 单元测试讲解
  5. 《Python Cookbook 3rd》笔记(5.4):读写字节数据
  6. 【图像处理】透视变换 Perspective Transformation(小细节修正和推导流程补充)
  7. 开源2D图形库/图形框架
  8. java redis 原子操作_7000字 Redis 超详细总结笔记 !建议收藏
  9. win64位下安装python的image支持
  10. urllib携带登录信息
  11. 服务器设置系统盘分页,服务器设置系统盘分页
  12. WPF的5种绑定模式(mode)
  13. TimesTen 介绍
  14. AlphaGo开源代码
  15. Linux基本操作---实践+理解--CentOS 7
  16. 一键在线生成朋友圈转发点赞截图教程
  17. 和小松一起聆听遥唤根本上师
  18. 论uni-app中,文本首行缩进两个字符解决方法
  19. 什么是OA系统?OA系统是什么?OA是什么意思?
  20. 第十七届全国大学生智能汽车竞赛讯飞-家庭服务机器人挑战赛全国总决赛规则

热门文章

  1. 计算机p是什么单位是什么,功率的计算公式及单位
  2. 基于simulink的PID控制器设计
  3. 江苏无锡14岁女孩被推荐上北大(图)
  4. cad中直径符号不显示_【技巧】大神在CAD、Word里敲出和快速绘图的小秘密!(内附cad快捷键大全)...
  5. D L N A介 绍
  6. 解决”Windows已经保护您的电脑”的三个方法
  7. IPsec中IKE与ISAKMP过程分析(主模式-消息5和消息6)
  8. Mysql 各个版本区别及官网下载
  9. pythonmatplot教程_matplotlib入门实战全教程
  10. 南京工业大学校园网(智慧南工)自动登录