gpt4 book ai didi

f# - 何时在 F# 中使用区分联合与记录类型

转载 作者:行者123 更新时间:2023-12-03 11:34:24 25 4
gpt4 key购买 nike

在继续研究复杂的示例之前,我试图弄清楚 F# 的基础知识。我正在学习的 Material 介绍了 Discriminate Unions 和 Record 类型。我已经查看了两者的 Material ,但我仍然不清楚为什么我们会使用一种而不是另一种。

我创建的大多数玩具示例似乎都可以在两者中实现。记录似乎非常接近我认为的 C# 中的对象,但我试图避免依赖映射到 C# 作为理解 F# 的一种方式

所以...

  • 是否有明确的理由使用一个而不是另一个?
  • 是否存在某些适用的规范案例?
  • 是否有某些功能合二为一,但不是
    其他?
  • 最佳答案

    把它想象成一个 Record 是“and”,而一个有区别的联合是“or”。
    这是一个字符串和一个整数:

    type MyRecord = { myString: string
    myInt: int }

    虽然这是一个字符串或 int 值,但不能同时是两者:
    type MyUnion = | Int of int
    | Str of string

    这个虚构的游戏可以在标题屏幕、游戏中或显示最终得分,但只能是这些选项之一。
    type Game =
    | Title
    | Ingame of Player * Score * Turn
    | Endgame of Score

    关于f# - 何时在 F# 中使用区分联合与记录类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291932/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com