【发布时间】:2021-10-30 01:12:01
【问题描述】:
我正在尝试在 F# 中实践领域驱动设计,偶然发现了以下问题:
当使用元组似乎需要更少的语法并且在模式匹配和整体使用场景方面似乎更强大时,为什么我要使用记录?
例如,如果我要使用元组代替,我觉得我不再需要创建记录类型来实现区分联合。
type Name = { First:string
Middle:string option
Last:string }
type Duration = { Hours:int
Minutes:int
Seconds:int }
type Module =
| Author of Name
| Title of string
| Duration of Duration
let tryCreateName (first, middle, last) =
{ First=first; Middle=Some middle; Last=last }
let tryCreateDuration (hours, minutes, seconds) =
{ Hours=hours; Minutes=minutes;Seconds=seconds }
let name = tryCreateName ("Scott", "K", "Nimrod")
let hours = 1
let minutes = 30
let seconds = 15
let duration = tryCreateDuration (hours, minutes, seconds)
我的想法准确吗?
在大多数情况下,是否需要元组而不是记录?
【问题讨论】:
-
我会回答,但我知道托马斯会做得更好。 IIRC 它与使用 C# 和 .NET 有更多关系。如果您纯粹是在 F# 中,那么请使用元组。如果您正在使用其他 .NET 代码,请使用记录。还有其他因素,例如它是否带有记录,如果它不是公开的,是否带有元组等。另外,在您询问之前,请参阅链接末尾的When to Use Classes, Unions, Records, and Structures。
-
你看到F# tag中的所有信息了吗?
-
@ Guy Coder - 感谢您的链接。该指南似乎支持您关于为何使用记录的指导。谢谢。
标签: f#