F# 入门(三):F# 基础数据类型

F# 快速入门-基本语法 F#语法简介,(英文),言简意赅,共28页,带领大家进入F#的世界! 立即下载

类型检查可发生在编译时期(静态检查)或运行时期(动态检查)。静态类型检查是在编译器进行语义分析中进行的。如果一个语言强制实行类型规则(即通常只允许以不丢失信息为前提的自动类型转换)就称此语言为强类型,反之称为弱类型。F#使用的是静态类型检查。这意味着,如果你传入一个string 值给 类型为int的变量,那么你将得到一个编译错误。

下面是F# 中一些数据类型:

你可以通过let关键字来定义值,事实上let 能做的事情很多。

  1. 常数

定义一个int型变量:

> let iInt = 1;;

val iInt : int = 1

(注意:文中的代码均在F# interactive 窗口中运行得到,在;; 之前的代码为输入部分,val 之后且包括val 都是输出部分。)

定义其它常数类型:

> let fFloat = 1.0;;

val fFloat : float = 1.0

> let ulInt = 1UL;;

val ulInt : uint64 = 1UL

下面是关于常数的表格:

类型

后缀

.NET 类型

范围

byte

uy

System.Byte

0-255

sbyte

y

System.SByte

-128 -   127

int16

s

System.Int16

−32,768 - 32,767

uint16

us

System.UInt16

0 -   65535

int,int32

 

System.Int32

−2^31 – (2^31 – 1)

uint,uint32

u

System.UInt32

0 –   (2^32 – 1)

int64

L

System.Int64

−2^63 – (2^63 – 1)

uint64

UL

System.UInt64

0 –   (2^64 – 1)

float

 

System.Double

 

float32

f

System.Float

 

decimal

M

System.Decimal

 

F#也支持使用前缀的形式定义常数类型:

> let iInt = 0xF1;;

val iInt : int = 241

  1. 字符类型char :

> let cChar = 'H';;

val cChar : char = 'H'

  1. 字符串类型 string:

> let sString = "Zack";;

val sString : string = "Zack"

  1. 输出类型值:

F# 中的输出函数:printf ,printfn ,sprint

Printf函数用来输出但不换行

Printfn函数输出并换行

Sprint 函数用来保存想打印的值, 如:let hold = sprintf "%s" "Zack Zhou"

  1. Unit(空类型):

> let empty = ();;

val empty : unit = ()

这里的unit就等价于其它语言中的void, 在代码中使用()来表示unit.

  1. Tuple(元组)类型:

> let tTuple = ( 1, "Zack" );;

val tTuple : int * string = (1, "Zack")

tuple 是一个组合类型,你可以像这样:(常量A,常量B,….)来定义一个tuple变量,其中A与B与其它常量的类型可以不同,也可以相同。 在FSI中我们可以看到此tuple的组合类型是:int*string,也就是A的类型* B的类型*其它各个常量的类型。Tuple 可以作为函数的返回值——这样就可以一次返回多个值。

那么,如何使用tuple里的值呢?我们可以如下定义一些变量:

> let ( a, b ) = ( 1, "Zack" );;

val b : string = "Zack"

val a : int = 1

也可以使用F# 定义好的两个函数来取tuple中的第一个和第二个值:

> let a = fst tTuple;;

val a : int = 1

> let b = snd tTuple;;

val b : string = "Zack"

  1. List(链表)类型:     

> let iList = [ 1; 2; 5; 6 ];;

val iList : int list = [1; 2; 5; 6]

这里我们定义了一个int型的List,也就是说此List 中所有的元素都是int型。需要注意的是:List 中元素必须是同种类型的,这点不同于tuple 类型。

List 可以像数组那样使用下标来取得指定位置的元素:

> let iElement = iList.[1];;

val iElement : int = 2

关于List 的一些函数,在这里我就不一一列举每个函数的使用方法了,List内置了许多强大的函数,在使用时,非常方便。

List内置的函数

描述

List.length

返回List的长度

List.head

返回List 的首个元素

List.tail

除去首个元素,将剩下的元素,组成一个新的List并返回

List.exists

返回一个bool值用来表示此List中是否存在指定的元素

List.rev

反转链表

List.zip

给定两个相同长度的List ,返回一个元组类型的组合List。

List.filter

返回一个由所有满足要求的元素组成的List

下面是List的一些常用的操作符:@ ——用来连接两个List ,::——用来将单独的元素加入到已知List的头部。

如:

let  combineList  =  [1;2;3]  @  [4;5;6]

let  addElem  =  1  ::  [2;3]

事实上,F# 还有一些其它较复杂的数据类型,如:Record ,Class,Discriminated Unions, Lazy  Types, Sequence等等。这些将在后面的博客中单独介绍。

F#_入门教程 F#_入门教程,非常容易上手,同时,也是未来微软大数据主要的语言 立即下载

相关推荐

Unity序列帧动画输出全攻略:Recorder+Timeline实战与透明通道处理

序列帧动画是游戏开发、影视动画和UI动效中的基础技术,指将连续动作分解为一系列静态图像并按序播放,形成动态视觉效果。其原理是通过时间轴精确控制每一帧的内容与时机,实现动画的逐帧呈现。在实时渲染领域,序列帧输出技术价值显著,它能够将动态内容高质量地转换为静态图像序列,便于跨平台复用、后期合成与资源分发。应用场景广泛,包括角色动画导出、技能特效制作、宣传片素材生成等。本文聚焦Unity引擎,深入解析如何利用Recorder与Timeline工具链,高效输出带Alpha透明通道的PNG序列帧,并重点攻克透明通道处

weixin_31556767的博客 327

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

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

qq_56942034的博客 1912

基于RK3588与Gstreamer的端侧实时视频流AI推理系统构建

本文详细介绍了基于RK3588芯片与Gstreamer框架构建端侧实时视频流AI推理系统的完整方案。通过硬件选型、环境配置、OpenCV编译优化、视频流处理实战及模型部署等关键环节的深入解析,展示了如何利用RK3588的6TOPS NPU算力与Gstreamer的低延迟特性,实现工业质检、智能交通等场景下的高效边缘计算。特别针对RTSP推拉流优化、RKNN模型转换等核心技术难点提供了实用解决方案。

weixin_30516243的博客 381

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

Deepseek接入QQ机器人:实现拟人化概率回复的完整指南

大语言模型API正在快速改变即时通讯工具的交互方式。通过标准化的OpenAI兼容接口,开发者可以将Deepseek等AI服务嵌入到QQ机器人等IM场景中,实现自然语言对话能力。其核心原理在于事件驱动架构:消息接收层通过OneBot协议获取群聊内容,业务层利用概率过滤与冷却机制控制回复节奏,再由大模型生成拟人化文本。这种设计不仅避免了机器人刷屏,还能通过系统提示词塑造性格,营造真实的社群陪伴体验。适用于粉丝群互动、内容订阅、小规模客服等场景,同时支持多群独立配置、关键词加权回复及上下文记忆扩展。在实际工程中,

weixin_29051245的博客 458

集成库仑计移动电源设计:从原理到实战,实现精准电量管理

在电池供电设备中,精准的电量计量是提升用户体验和产品可靠性的核心技术。传统基于电压估算的方法因受温度、负载和老化影响误差较大,而库仑计技术通过直接测量充放电电流并对时间积分,实现了电荷量的直接计量,从根本上提升了精度。这项技术的核心价值在于为设备提供了真实、可靠的电量状态数据,是智能电池管理系统的基础。其应用场景广泛,从消费电子如移动电源、智能穿戴,到工业与汽车领域如储能系统、新能源汽车的电池管理都不可或缺。本文以移动电源为例,深入解析了集成库仑计方案的硬件设计要点,特别是围绕高精度采样电阻与差分放大器的电

weixin_33453726的博客 551

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

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

scixing的博客 1128

星链V3的2048条波束与1Tbps:多波束相控阵的工程代价

低轨卫星通信的容量提升,核心在于多波束相控阵天线的空间复用能力。相控阵通过控制大量天线单元的相位,可在同一阵面同时形成多条独立指向的波束,从而在有限频谱内成倍提升系统容量。星链V3宣称的2048条波束与1 Tbps汇聚吞吐量,正是基于这一原理:更多波束意味着更高的频率复用系数和更灵活的资源调度。但工程实现并非免费午餐,数字背后是供电、散热、重量、发射成本及运维复杂度的急剧攀升。从用户侧看,更精细的波束也带来切换频繁、低仰角衰减等新挑战。本文从多波束相控阵的基础原理出发,拆解波束形成、频谱复用和动态调度的工程

weixin_33462167的博客 347

F# 教程

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

weixin_46121540的博客 772

告别复杂模型:用UFLD算法5分钟搞定车道线检测(附Python代码)

本文介绍了UFLD(Ultra Fast Lane Detection)算法在车道线检测中的高效应用,仅需5行核心代码即可实现实时检测,特别适合边缘计算设备。通过对比传统方法,UFLD在推理速度、模型大小和硬件需求上具有显著优势,是深度学习领域轻量级解决方案的典范。

weixin_27872611的博客 288

数学建模Matlab算法,第七章 对策论

对策论作为研究竞争与决策的数学理论,从零和对策到非常数和对策,为分析各类博弈问题提供了系统框架。其核心要素包括局中人、策略集和赢得函数,通过稳定解、Nash平衡点等概念揭示竞争规律。该理论广泛应用于经济、军事、政治等领域,不仅提供具体分析工具,更改变了决策思维方式,强调在互动中实现理性选择。对策论既揭示了竞争本质,也凸显合作价值,为解决社会矛盾、促进共赢发展提供了重要启示,在全球化背景下将发挥更大作用。

unber的博客 109

F#教程: 基础语法

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

weixin_46121540的博客 1052

HyperLynx(十四)高级分析技术

如果没有查找到该模型,可使用菜单命令“Setup”→“Options”→“Directories”,打开“Set Directories”对话框,单击“Edit”按钮,在“Select Directories for IC-Model Files”对话框中将路径“…在“Assign Models”对话框中的“Port”栏找到“OUTM”端口,在其对应的“Circuit Connection”栏中选择“txout”项。将端口R75连接到“Gnd”。同样,将“EMP”连接到“V”,完成预加重设置。...

小幽余生不加糖 4948

F# 入门(三):F# 基础数据类型

类型检查可发生在编译时期(静态检查)或运行时期(动态检查)。静态类型检查是在编译器进行语义分析中进行的。如果一个语言强制实行类型规则(即通常只允许以不丢失信息为前提的自动类型转换)就称此语言为强类型,反之称为弱类型。F#使用的是静态类型检查。这意味着,如果你传入一个string 值给 类型为int的变量,那么你将得到一个编译错误。 下面是F# 中一些数据类型: 你可以通过let关键字来定义值,...

weixin_34363171的博客 144

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

F#语言的数据类型

F#强大的类型系统为开发者带来了许多便利,从基本的数据类型到复杂的复合类型,甚至是自定义的数据结构,F#都能提供高度的类型安全和表达能力。通过合理使用各种数据类型,开发者可以编写出既简洁又高效的代码。掌握数据类型的使用是F#编程的基础,因此理解它们的特点和场景对任何希望深入学习这门语言的人都是至关重要的。通过具体的示例与实践,相信读者能够在实际开发中更好地应用F#的数据类型,实现高效、优雅的编程。

2501_90383880的博客 1675

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如果你也会C#,那不妨了解下F#(1):F# 数据类型

本系列文章假设你在了解C#的情况下,将F#与C#在异同点上进行说明,让读者能快速地对F#有个系统的了解。

dotNET跨平台 1095

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

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

F# 基础

F# 基础 再译《F# 基础》序 前言 第一章     什么是函数编程     函数编程为啥重要     什么是 F#     谁在用F#     谁能读本书 第二章 获得、安装、使用 F# 第三章 函数编程(一)     文字、函数、标识符、标识符的命名、作用域、轻量语法 第三章函数编程(二)     捕获标识符、use

心想事成 3199

F#语言的学习路线

F#是一种多范式编程语言,支持函数式编程、面向对象编程和命令式编程。作为一种静态类型语言,F#在编译时会进行类型检查,从而提高代码的安全性和可靠性。使用let关键字定义函数。fsharp学习F#是一段充实而又富有挑战性的旅程。通过本文提供的学习路线,从基础知识到进阶技巧,再到项目实践,相信你能够逐步掌握F#编程语言。希望你在F#学习的过程中,能够体验到功能性编程的魅力,并将其运用到实际的开发中。祝你学习顺利!

2501_90443656的博客 2052
上一篇: F# 入门(四):let语句——值的绑定/函数定义
下一篇: F# 和Silverlight 4
fsharp_net
博客等级 码龄15年 20粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值