当前位置: 首页 > news >正文

【F#学习】可区分联合 Discriminated Unions

可区分联合是一串固定的项目。使用type| 来声明。将每一个项目称为一个case

type Season =| Spring  // Spring 就是一个 case| Summer| Autumn| Winter

可区分联合的每一个case都可以附加一些数据,不同的case可以附加不同类型的数据。当然,如果每一个case都没有附加数据,那这个可区分联合其实就和C#中的枚举enum区别不大了。

type Number =| Integer of int| Float of float| Invalid

为了创建一个可区分联合的实例,直接引用该case的名称即可。但是当两个可区分联合中出现了相同的项目的时候,需要使用全称。

type Number =| Integer of int| Float of float| Invalidtype Result =| Message of string| ErrorCode of int| Invalidlet byShortName = Integer 2
let byFullName = Number.Invalid

可区分联合可以判断是否相等。当且仅当二者是相同的case且具有相同的附带值的时候,二者相等。

你可以使用if/elif/else来判断,不过更推荐的方法是使用模式匹配。

let describe number =match number with| Integer i -> sprintf "Integer: %d" i| Float d  -> sprintf "Float: %f" d| Invalid   -> "Invalid"
http://www.gsyq.cn/news/10074.html

相关文章:

  • 大环境不好,这几个赚钱网站可以试试
  • Model Context Protocol (MCP) 完整协议流程详解
  • C#和Lua相互访问 - 详解
  • jemter 安装
  • Day20创建对象内存分析
  • 熬夜三天!SpringCloud Gateway 动态路由失效,背后黑手竟是它……
  • cmd 执行git bash 命令
  • 基于Python+Vue开发的新闻管理系统源码+运行步骤
  • Spring框架中的注解主要有哪些
  • 探索 12 种 3D 文件格式:综合指南
  • 强化学习算法如何控制人形机器人行走的 —— 策略映射动作,动作如何控制电机?
  • list集合根据某字段获取某个对象
  • 后缀数组基础 Suffix Array
  • 完整教程:第33章 AI在教育领域的应用
  • 易软通openWMS - 功能齐全的开源WMS
  • 遇到一件循环导入事件
  • 上海这样的地段简直是逆天
  • 【GitHub每日速递 250923】 Google 又放大招!TimesFM 2.5 参数减半,预测更准更快
  • 具身智能机器人架构:人形机器人系统架构深度拆解
  • 卓驭,欧洲无绝境
  • 下周审核4家IPO,2家再融资。其中两家IPO企业于在审期间调减募资规模
  • Java 与大数据实时处理:Kafka、Flink 与企业应用
  • Java 与企业级中间件:消息、缓存与数据库集成
  • 测试测试测试测试测试
  • 一些正在制作的“格林达姆”测试项目,以及“假无损”
  • 九月22号
  • 25.9.22 继续MySQL
  • 开机RAM分析调试SOP
  • 2025.9.21 测试 (a1a2a3a4a5)
  • 基于Hex Editor Neo的二进制文件模板