F# 入门(十):mutable关键字

科研绘图系列:基因突变瀑布图统计以及可视化 阅读详情

F#中的变量的值在声明初始化后就不可以被修改了。

但如果想使用可变的变量时,用mutable关键字修饰变量就可以被修改了。

 

使用mutable关键字声明变量后,使用<-可以修改变量的值。

下面我们来看一些例子。

// 定义一个可变整形变量,初始值为1,改变值后为10

> letmutable num = 1;;

valmutable num : int = 1

>num;;

val it :int = 1

> num<- 10;;

val it :unit = ()

>num;;

val it :int = 10

// 这里是一个Record(记录),里面的Miles字段为可变值

> typeMutableCar = { Make : string; Model : string; mutable Miles : int };;

 

typeMutableCar =

  {Make: string;

   Model: string;

   mutable Miles: int;}

 

mutable与引用类型是有区别的,引用类型是针对变量本身,而mutable值只是针对值。

可以通过下面例子看出:

//引用变量

> letnum = ref 1

let b =num

b := 2

//这里声明一个引用变量,然后赋值给b后,改变b值为2

val num :int ref = {contents = 2;}

val b :int ref = {contents = 2;}

>!num;;

val it :int = 2

 

//mutable变量

//这里定义一个mutable变量,然后赋值给mutable变量b,改变b的值为2

> letmutable num = 1

letmutable b = num

b<- 2;;

 

valmutable num : int = 1

valmutable b : int = 2

>num;;

val it :int = 1

 

实际上,引用类型可以理解为包含一个mutable字段(contents)的记录类型。

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C ) 阅读详情

相关推荐

华为AC外置Portal认证方案配置步骤指南

华为AC外置Portal认证方案配置步骤指南

m0_46129105的博客 7674

F#基础篇_(1)F#简介

F#的简介以及开发环境配置

qq_56942034的博客 1912

国土变更调查中六类拓扑错误的成因分析与高效修复实践

本文深入分析了国土变更调查中六类拓扑错误的成因,包括边界不一致和不规则图形等常见问题,并提出了高效的自动化修复实践。通过智能咬合算法、引力-斥力平衡模型等核心技术,显著提升了修复效率,节省人工质检时间70%。文章还分享了实战中的避坑指南和黄金法则,为相关从业人员提供了宝贵经验。

weixin_29202213的博客 359

F# 和 C# 的区别

最近老板莫名奇妙叫我们用F# 好好的有别的语言为啥要用F#, 经过我找了一些资料这里讨论一下自己的看法。 要是其他人有意见欢迎留言。 F# 也是 .NET 语言,特点也许是 函数编程语言(Functional Programming),基础是Lambda Calculus。 这里看 F# 例子 //square let square x = x * x // define the sumOfSquares function let sumOfSquares n = [1..n] |> List.ma

meowtresting 3794

Pwntools不只是PWN:用它写个自动化Fuzz脚本,挖掘Linux命令行工具漏洞

本文探讨了如何利用Pwntools构建自动化Fuzz脚本,挖掘Linux命令行工具中的漏洞。通过详细的代码示例和实战案例,展示了Pwntools在Fuzzing中的高效性和灵活性,特别适合快速验证特定场景的安全问题。文章还提供了进阶技巧和避坑指南,帮助安全研究人员快速上手并提升测试效率。

weixin_28718345的博客 221

小土堆学习笔记1:Dataset类代码实践

上一页中反复提到“类”,这究竟是什么东西?按我的理解(肯定不准确也不正式),class类就是某一个东西的共性,而且是等待被确认的共性。比如每台手机都有它自己的品牌、框架、价格等等属性,class类正是这些尚不确定的属性;而一旦确认了这些属性,就能够确认这到底是一台什么型号什么状态的手机,在确认了全部属性后就知道,这是一台Apple 16 Pro Max。抽象的不确定的共性就是类,具体的确定的个性就是示例。这个共性可以被用于多个编程目的,只不过某一个具体的编程行为还有它自己的独特性。

qq_40525602的博客 1626

【F#初学者】第一讲 F#简介&&&第一个F#程序

F#初学者系列,介绍了F#的优势和编写了第一个程序

scixing的博客 1128

使用 Vosk 实现语音识别

在近两年里,如果说想要在本地部署离线语音识别模型,那么和肯定是首选项。所以为什么要使用呢?

weixin_48967543的博客 9719

F# 教程

F# 是一种多范式编程语言,它可以支持面向对象编程、函数式编程和并发编程。Framework上得到了广泛的应用,它的语法非常简洁,而且易于学习。本篇文章将介绍 F# 的基础知识和一些重要的语法概念。

weixin_46121540的博客 772

瑞芯微rk3568移植openbmc(一)----关于ob移植的优缺点

基于rock3a的单板,CPU为瑞芯微rk3568的环境,移植了openbmc

feixiang3839的专栏 5537

第1集:认识 Claude Code —— AI 编程新纪元

1. 定义 Claude Code:终端中的 AI 编程代理Claude Code 是 Anthropic 公司于 2025 年 5 月正式推出的命令行 AI 编程工具,它不只是一个代码补全工具,而是一个能够理解项目、自主执行任务的**终端 AI 代理(Agent)。它的核心理念是 **"生于终端,活于终端"** (lives in your terminal)。与深度嵌入图形界面(GUI)的工具不同,Claude Code 选择直接融入开发者最原始、最核心的工作环境——命令行。

dianziyao_的博客 865

F#教程: 基础语法

F#是一种跨平台的函数式编程语言,它结合了函数式编程和面向对象编程的特性。它是一门简洁、高效、安全和可扩展的语言,具有高度的表达能力和可读性。在本文中,我们将会介绍F#的基础语法,并提供相关示例,帮助读者更好地理解F#的特性和优势。本文的目标读者是已经掌握一门编程语言,并对F#有一定了解的读者。

weixin_46121540的博客 1052

非结构化数据在大数据湖中的应用实践

想象一下,你正在整理一个杂乱的书房。有些书整整齐齐地放在书架上,每本书都有明确的标题、作者和出版日期——这些就是结构化数据,它们像数据库中的表格,有固定的格式和字段。但书房里还有更多东西:散落的照片、手写的笔记、录音带、视频光盘、甚至还有画作。这些物品没有固定的格式,每件都独一无二——这就是非结构化数据。在技术术语中,非结构化数据是指没有预定义数据模型或组织形式的信息。文本文档(Word、PDF、TXT)电子邮件和社交媒体内容图像和照片(JPG、PNG)音频文件(MP3、WAV)

软件工程实践的博客 361

无涯教程-F# - 可变变量(Mutable)

F#中的变量是不可变的,这意味着变量一旦绑定到值,就无法更改,它们实际上被编译为静态只读属性。下面的示例演示了这一点。letx10lety20letzxyprintfn"x: %i"xprintfn"y: %i"yprintfn"z: %i"zletx15lety20letzxyprintfn"x: %i"xprintfn"y: %i"yprintfn"z: %i"z编译并执行程序时,它显示以下错误消息-

无涯教程 1051

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

F#入门-第二章 F#基础-第十一节 mutable关键字

F#入门-第二章 F#基础-第十一节 mutable关键字

LuLingNiu的专栏 611

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

F#入门学习(七)

mutable可变值关键字 F#这个语言与其他入门语言有个很大的不同,那就是,定义的值是不可变的。 也就是说,默认情况下,系统自动认为值是不可变的。 这样的两行代码在C语言可行,在F#中却说x的定义重复。 不可变值有很多优点: 内在的线程安全 在推理和理解方面较简单 有较高的安全性 但是如果必须用到可变的值呢? 就可以使用mutable关键字了。 let mutable x = 5 x x...

I_AM_KK的博客 509

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

无涯教程-F# - 变量类型

变量定义告诉编译器应在何处以及为变量创建多少存储空间,变量定义可以指定一种数据类型,并包含该类型的一个或多个变量的列表。

无涯教程 917

F#教程:变量和常量

F#教程:变量和常量

weixin_46121540的博客 147

F#探险之旅(三):命令式编程(上)

 在本系列的第二部分(函数式编程上、中、下)中,我们了解了如何使用F#进行纯粹的函数式编程。但是在一些情况下,比如I/O,几乎不能避免改变状态,也就是说会带来side effect。F#并不强求你以无状态的方式编写程序,它提供了可修改(mutable)的标识符来解决这类问题,同时它还提供了其它的程序结构以支持命令式编程。现在就来对这些特性探个究竟。  首先是unit类型,这种类型表示“没有值”

469

F#基础教程 定义mutable记录类型

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

weixin_30909575的博客 87

无涯教程-F# - 可变字典(Mutable Dictionary)

Dictionary <TKey,TValue>类是F# 字典数据结构的可变模拟,并且包含许多相同的功能。

无涯教程 968

F#基础教程 mutable关键字

在第三章中,我们谈到如何使用关键字let绑定标识符到值,并指出在那些情况下可以重新定义和恢复之前的值,但是不能修改。如果你想定义一个标识符,其值可以随时间而改变(亦即随程序运行而改变),你可以使用mutable关键字,用于更新这些标识符的是一个特殊的操作符,左ASCII箭头(或只是左箭头),由一个小于号和破折号(-)组成。使用左箭头的更新操作具有unit类型,所以你可以链接多个操作。下...

weixin_30575309的博客 118

F#程序设计-函数式编程之值的可变性

在.NET中,变量的存放可以放在两个地方堆栈(stack)和堆(heap)中,放在堆栈的变量类型被称为值类型,而放在堆中的被称作为引用类型。值类型就是在堆栈中拥有固定大小的空间,比如int、float类型,引用类型,在堆栈上仅仅存储一个指针,指向堆中内容的地址。尽管虽然指针具有固定的大小,比如4个字节或者8个字节,但是它指向堆中存放的内容可以是更大的。 在F#中,变量的存放机制跟.NET的

AAAA的专栏 784

F# 入门(四):let语句——值的绑定/函数定义

let是F#里的最基础和最主要的一个关键字,let语句是变量赋值以及对变量进行函数定义的语句。 let语句主要用来进行变量值得绑定,绑定的值是不能改变的,也就是跟常量一样,这样做可以避免很多程序员疏忽等人为BUG。当然可以通过添加mutable关键字来进行非常量绑定。如下: let  helloStr = "Hello World" // 不可变的值 let  mutable num = 1

fsharp_net的专栏 1852

F# 之旅(上)

一、写在前面的话 解答一下在上一篇文章《在Visual Studio中入门F#》中有人的提问,   1. 问:是准备写 F# 系列吗?    答:当然不是,本人也是刚刚学习 F#,只是翻译微软官方的文档,但是我会尽力翻译更多的文章。   2. 问:你们的项目使用F#写的吗?    答:本人大三学生,也不是什么大佬,兴趣而已。 二、在这篇文章中 ...

170

F# 入门(八): 值类型/引用类型

总得来说,数据值存储在栈上面的称为值类型,而数据值存储在堆上面的称为引用类型。 对于F#而言,每个声明的值都会在创建时被初始化,因为在函数式的编程中,值被声明后就是不可变的。下面看看怎么获取某个值的情况: Unchecked.defaultof 获取'a的默认值 typeof 返回描述'a的System.Type对象 sizeof 返回'a在栈上的空间大小 在F#中,默认所有值

fsharp_net的专栏 776
上一篇: F#与数学 - 数字运算与F# PowerPack
下一篇: F# 入门(十一):链表与数组
fsharp_net
博客等级 码龄15年 20粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值