F# 入门(六):F#中的 for/while循环

Xilinx Chip2Chip IP核实战:Aurora PHY通信配置与仿真避坑指南 本文深入解析Xilinx Chip2Chip IP核与Aurora PHY的通信配置与仿真优化,提供实战避坑指南。通过AXI协议转换桥实现FPGA间高速数据传输,详细讲解Aurora PHY参数设置、仿真加速技巧及常见问题解决方案,帮助工程师快速部署稳定高效的芯片间通信系统。 阅读详情

首先我们来看看F#中基本的for循环编写方法。

for循环

for语句1 := for 循环变量 = 表达式1 to 表达式2 do 表达式3 done

for语句2 := for 循环变量 in 表达式4 do 表达式5done

for语句1有点c语言的风格。

for语句2就是一般所说的foreach循环,类似于C#,不过功能更强大。

 

下面我们来看看第一种for循环:

> // For loop

for i = 1 to 5 do

printfn "%d" i;;

1

2

3

4

5

val it :unit = ()

这里在表达式中将循环变量进行初始化,从1循环到5,然后输出每个整数。

 

用downto关键字来表示反向递减的循环:

> // Counting down

for i = 5 downto 1 do

printfn "%d" i;;

 

第一种for循环只支持整数,如果循环超过System.Int32.MaxValue次时,你需要用可枚举(enumerable)的for循环,即第二种for循环:

> // Enumerable loop

for i in [1 .. 5] do

printfn "%d" i;;

1

2

3

4

5

val it :unit = ()

这跟C#中foreach循环类似,但它可以支持模式匹配,这让它比C#更强大。如下面的例子,famousPets中有猫和狗,这里用到了F#中的可区分联合:

> // Pet type

type Pet=

| Cat of string * int // Name, Lives

| Dog of string // Name

;;

type Pet=

| Cat of string * int

| Dog of string

 

> letfamousPets = [ Dog("Lassie"); Cat("Felix", 9);Dog("Rin Tin Tin") ];;

valfamousPets : Pet list = [Dog "Lassie"; Cat ("Felix",9); Dog"Rin Tin Tin"]

 

> //Print famous dogs

for Dog(name) in famousPets do

printfn "%s was a famous dog." name;;

Lassiewas a famous dog.

Rin TinTin was a famous dog.

val it :unit = ()

 

对于第二种for循环,只要对象有序列,就可以进行访问,具体来说:

  • 链表或数组
  • 所有seq数据类型
  • 所有支持GetEnumerator方法的数据类型

这里值得注意的是,在F#的for循环中没有break或者continue关键字,如果真需要,你可以添加一个变量,把for循环转换成while循环。

 

 

下面我们简单介绍下while循环。

while循环

while语句 :=while 表达式1 do 表达式2done

 

> // While loop

letmutable i = 0

while i < 5 do

i <- i + 1

printfn "i = %d" i;;

i = 1

i = 2

i = 3

i = 4

i = 5

valmutable i : int = 5

while循环不能被用在存粹的函数式类型,因为你不可以改变判定而循环永远也不会终止。

蓝牙模块HM-10手册 蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。 立即下载

相关推荐

自动驾驶系统架构解析:从传感器到决策控制的完整链路(附实际案例)

本文深入解析了自动驾驶系统从感知、决策到控制的完整架构链路。通过对比摄像头、毫米波雷达、激光雷达等核心传感器的特性与选型策略,阐述了多传感器融合的必要性。文章结合行为决策、运动规划及控制执行的实际案例,揭示了系统集成、数据闭环与功能安全等工程化落地的关键挑战,为理解自动驾驶技术提供了清晰的蓝图。

weixin_29051811的博客 339

F# for循环16例

在F#的for循环中,我们可以自定义循环变量的名称。让我们看一个示例,使用自定义的循环变量名称打印数字1到10。这段代码将使用自定义的循环变量名称num打印数字1到10。我们可以根据需要选择合适的循环变量名称。

weixin_46121540的博客 204

vTaskStartScheduler()详解

是启动 FreeRTOS 实时内核的“扳机”。在调用它之前,你只是创建了一些任务结构,但它们都处于“待命”状态,系统仍然在按传统的裸机前后台方式运行。调用这个函数后,FreeRTOS 内核会接管系统的控制权,开始根据优先级调度你创建的任务,多任务环境才真正开始。关键点:它没有参数。它的所有行为都由中的配置宏控制。它通常不会返回。一旦调用,除非没有任务可以运行(或者你显式地停止了调度器),否则程序流永远不会回到main()函数中调用它的下一行。是一个没有参数但行为由精密控制的函数。

Shylock_Mister的博客 1594

F#入门-第二章 F#基础-第八节 for循环

F#入门-第二章 F#基础-第八节 for循环

LuLingNiu的专栏 573

INCA文件刷写全流程:从ES581驱动安装到XCP协议实战(附避坑指南)

本文详细解析INCA文件刷写的全流程操作,从ES581驱动安装到XCP协议配置,提供实战经验与避坑指南。涵盖A2L文件校验、工作区优化、XCP参数调优及自动化刷写技巧,帮助工程师高效完成ECU开发中的文件刷写任务。

egg99的博客 943

Hive数据仓库分层架构实战:4层黄金模型×6大业务场景×万亿级数据优化方案

根据《2023数据中台成熟度报告》,‌78%的ETL任务性能瓶颈‌源于分层设计不合理。本文基于某头部电商平台PB级数据仓库建设经验,结合金融风控、用户画像、实时大屏等核心场景,深度解析‌ODS→DWD→DWS→ADS‌四层架构设计原则,揭秘‌万亿级数据治理方案‌与‌维度建模20大避坑策略‌。

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1484

F#语言的循环实现

在F#语言中,循环的实现方式多种多样,包括传统的for和while循环、递归函数以及高阶函数等。虽然可以使用传统的循环结构,但函数式编程更倾向于使用递归和高阶函数来处理重复的逻辑。通过本文的探讨,我们看到了F#在处理循环逻辑方面的强大功能。递归提供了一种优雅的简化方式来表达复杂的循环,而高阶函数使得我们可以在更多的场景下避免显式的循环结构。这种设计理念不仅使得代码更简洁,也提高了逻辑的清晰度和可维护性。在实际开发中,理解和灵活应用这些循环实现方法,对于提升F#编程能力和代码质量至关重要。

2501_90168293的博客 410

手把手教你用RK3568开发板实现FPGA与Linux的DMA通信(含完整代码解析)

本文详细介绍了如何在RK3568开发板上实现FPGA与Linux系统的DMA通信,包括硬件配置、软件环境搭建、DMA通信原理、驱动开发及性能优化。通过完整的代码解析和实战案例,帮助开发者快速掌握异构系统间的高效数据传输技术,适用于物联网和边缘计算等场景。

weixin_29174385的博客 201

for循环详解

什么是for循环? for循环是一种常见的编程语言中的循环语句,而这种循环语句由循环体和循环的条件组成,在我个人的看法来说可以理解成以下的表达式:for(定义初始变量;循环条件;变量变化){循环语句块} 使用for循环时应该注意些什么? 1>for循环循环的条件最简可以写为for{ ; ; },其中分别对应的定义的初始量,循环条件,变量的变化的语句可以省略,但是分号不可...

孤独的根号三 8473

SAP-ABAP:SAP数据库视图(Database View)详解-创建

数据库视图是SAP中实现多表关联查询的基础工具,适合简单的跨表查询和权限控制场景。但其功能有限,对于复杂逻辑或高性能需求,建议结合CDS视图或ABAP程序开发。通过合理设计,数据库视图可显著提升开发效率和系统可维护性。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结果。是一种基于物理数据库表的虚拟表,通过关联多个表(使用。

baidu_35680696的博客 1370

ardupilot 方向余弦矩阵/旋转矩阵的理解

本节主要记录自己对ardupilot中用到的方向余弦矩阵/旋转矩阵的理解,欢迎批评指正,有些资料参考网上写的比较好的资料,免得查找资料麻烦。旋转矩阵的坐标理解:表示从旋转矩阵的下标的坐标系的坐标变换到上标表示的坐标系坐标下。旋转矩阵的坐标系理解:表示从旋转矩阵的上标的坐标系变换到下标表示的坐标系下。从旋转矩阵的投影更好理解,比如下面旋转矩阵的第一行是左边坐标系的第一维分量在右边坐标系的投影。

陌城烟雨 612

无涯教程-F# - 循环语句

for ... to表达式用于在循环变量值的范围内循环迭代, for…无涯教程网提供循环语句允许无涯教程多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的...循环语句允许无涯教程多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式-在给定条件为真时重复一个语句或一组语句,它在执行循环体之前判断条件。您可以在任何其他for或while循环中使用一个或多个循环。这种形式的for循环用于遍历项目的集合,即遍历集合和序列。F#提供了以下类型的循环来处理循环需求。

无涯教程 498

YOLOv8实战教程:从模型训练到改进的全流程指南

回顾这段YOLOv8的实战历程,从最初的模型训练到后来的各种改进尝试,我深刻体会到目标检测技术的魅力与挑战。YOLOv8作为一款优秀的框架,不仅易用性强,而且具备很强的可扩展性,让我能在其基础上不断创新。未来,我计划在以下几个方向继续探索:一是将YOLOv8与多模态技术结合,尝试实现图像与文本的联合目标检测;二是深入研究自监督学习在YOLOv8中的应用,减少对标注数据的依赖;三是探索YOLOv8在更广泛场景的部署,如机器人、自动驾驶等。

LXY_LOVE36的博客 279

无涯教程-F# - While…do 循环函数

while.do表达式用于在指定的测试条件为真时执行迭代执行。

无涯教程 396

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

F#入门学习(七)

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

I_AM_KK的博客 509

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

F#入门-第二章 F#基础-第九节 while循环

F#入门-第二章 F#基础-第九节 while循环

LuLingNiu的专栏 495

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

F#教程:while语句

前言:最近在了解F#,无意中看到一个日文的教程(http://techbank.jp/Community/blogs/gushwell/default.aspx),觉得很不错,所以希望可以和大家一起分、学习。F#里也有while语句。接下来我们就试着使用while语句写代码。 《不变性》一文中有人评论说可以适用ref,我们就试着使用下。 while循环的作用域通过缩进表示...

weixin_34324081的博客 133

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

控制流程(Control Flow)  在函数式编程(中)一文中,我们初步了解了F#在函数式编程范式下的控制流程,即if, elif, then, else等组成的结构。在命令式编程范式下,F#提供了更多的控制流程支持,包括if,while和for。  在命令式编程范式下的if结构与函数式编程下对应结构的主要差别在于,对于if分支,调用的函数为unit类型(即无返回值),而且并不要求必须使

432

单行Bash无限while循环的语法

我在提出正确的分号和/或花括号组合时遇到麻烦。 我想这样做,但是作为命令行的单行代码: while [ 1 ] do foo sleep 2 done

asdfgh0077的博客 2847

pythonif循环_三. python 循环if,while,for....

一 .if流程控制语句if语句:格式:if表达式:语句1. if语句#练习if语句aa=int(input("请你输入一个数是否是奇偶:"))if aa%2==0:print("是偶数")else:print("是奇数")2. if语句else#练习if语句aa=int(input("请你输入一个数是否是奇偶:"))if aa%2==0:print("是偶数")else:print("是奇数")#...

weixin_39814960的博客 523

F#实战入门:23行代码搞定CSV订单分析

F#是一种运行在.NET平台上的实用函数式编程语言,以不可变数据、管道操作符和模式匹配为核心特性,天然适合数据处理任务。其类型推导能力强大,记录类型(Record)让领域建模直观简洁,与C#、Python等语言相比,在解析CSV、清洗日志、聚合API响应等场景中能显著减少胶水代码和运行时错误。本文基于真实订单分析案例,展示如何用声明式数据流替代嵌套循环与临时变量,突出F#在ETL脚本、报表生成、配置校验等低副作用模块中的工程优势,并强调其与.NET生态的无缝互操作性。

a6t2007的博客 496

R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)

1、循环 ##循环for iris allzl=unique(iris$setosa) for (i in 1:2){ pp=iris[iris$setosa==allzl[i],] plot(pp$Sepal.Length~pp$Sepal.Width) } 2、switch分支语句 ##switch分支语句 switch(1,mean(1:10),rnorm(4)) #执行

素质云笔记 8万+
上一篇: 合成函数
下一篇: F# 入门(七): 匿名函数
fsharp_net
博客等级 码龄15年 20粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值