记录具有可空字段是否合法,例如:
type MyRec = { startDate : System.Nullable<DateTime>; }
这个例子确实构建在我的项目中,但是如果它合法,这是一个好的做法吗,如果有的话会带来什么问题?
最佳答案
这是合法的,但 F# 鼓励使用选项类型:
type MyRec = { startDate : option<DateTime>; }
通过使用选项,您可以轻松地对选项和其他操作进行模式匹配,以将选项值转换为例如映射值(通过使用
Option.map
)和诸如 Maybe monad(通过使用 Option.bind
)之类的抽象,而使用 nullable 你不能因为只有值类型可以为可空值。您会注意到大多数 F# 函数(例如
List.choose
)使用选项而不是可空值。 optional parameters 等一些语言功能被解释为 F# 选项类型。但是在某些情况下,当您需要与 C# 交互时,您可能希望使用 Nullable。
当使用 Linq 查询数据库时,您可以考虑使用 Linq.Nullable Module 和 Nullable operators
关于f# - 记录可以有一个可为空的字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23465440/