F#程序设计-函数式编程之Discriminated Unions

本文介绍了F#中的Discriminated Unions(DU),它是一种强大的数据类型,常用于表示有限的、已知的值集合。通过示例展示了如何定义DU,包括递归DU,以及如何在树结构和模式匹配中应用DU。
摘要由CSDN通过智能技术生成

discriminated union是函数式编程中的一个基础类型,要定义discriminated union类型,需要用到type关键字,后面接着的是discriminated union类型的名字,然后用"|"分隔每一个值。在discriminated union类型中的每一个值都被称作为union case。例如一套扑克有四种牌,红桃、方块、梅花、黑桃。我们可以定义一套牌的discriminated union类型:

> type Suit =
-      | Heart
-      | Diamond
-      | Spade
-      | Club;;

type Suit =
  | Heart
  | Diamond
  | Spade
  | Club

 

> let suits = [ Heart; Diamond; Spade; Club ];;

val suits : Suit list = [Heart; Diamond; Spade; Club]

 

你也可以利用union case把可选的数据关联起来,比如下面的例子,在一副牌中,每张牌都都有四种类型。除了A、J、Q、K四张牌外,剩下的1到10都可以利用一个元组类型来关联四种牌型。

type PlayingCard =
  | Ace of Suit
  | King of Suit
  | Queen of Suit
  | Jack of Suit
  | ValueCard of int * Suit

> let deckOfCards =
-     [
-         for suit in [ Spade; Club; Heart; Diamond

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值