F#Unions结构

/ / F#Unions结构

这是一种有用的数据结构。它有助于存储异构数据。UNION用于表示树数据结构。它提供案例,每个案例由异构数据组成。如果任何情况下都不存在值,则该情况等同于枚举情况。

type type-name =
    | case-identifier1 [of [ fieldname1 : ] type1 [ * [ fieldname2 : ] type2 ...]
    | case-identifier2 [of [fieldname3 : ]type3 [ * [ fieldname4 : ]type4 ...]
...

F#创建可区分联合示例

type Calculate =
    | Add of val1 : float * val2 : float
    | Square of val1 : int

在上面的代码中,有两种情况 Rectangle 和 Circle,每种情况都有不同的字段集。现在让无涯教程看看如何为这些情况调用和设置值。

let add = Add(val1 = 1.3, val2 = 10.0)
let square = Square (1)

它允许您在调用时使用字段名称,或者像在 Square 案例代码中所做的那样只传递值。如果使用字段名,则不需要维护字段的顺序。仅传递值时,您必须在传递值之前确保字段的顺序。

无涯教程网

F# 可区分联合示例

type Calcualte =
    | Add of val1 : int * val2 : int
    | Subtract of val1 : int * val2 :  int
    | Multiply of val1 : int * val2 : int

let compute vall =
   match vall with
     | Add (val1, val2) -> val1+val2
     | Subtract (val1, val2)->val1-val2     
     | Multiply (val1, val2)->val1*val2

let addition = compute (Add(10,10))
let subtraction = compute (Subtract(20,10))
let multiplication = compute (Multiply(2,5))

printf "Addition = %d\nSubtraction = %d\nMultiplication = %d" addition subtraction multiplication

输出:

Addition = 20
Subtraction = 10
Multiplication = 10

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

AI 时代程序员职业发展必修课 -〔Brook〕

AI PPT创作实战课 -〔小6〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

郭东白的架构课 -〔郭东白〕

程序员的测试课 -〔郑晔〕

说透芯片 -〔邵巍〕

Serverless入门课 -〔蒲松洋(秦粤)〕

深入拆解Java虚拟机 -〔郑雨迪〕

微服务架构实战160讲 -〔杨波〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者