【发布时间】:2023-03-18 13:28:01
【问题描述】:
因此,据我所知,当我在我的 F# 代码中创建一些属性时,因为 F# 不支持自动属性。我必须创建支持字段并将它们初始化为 null,这在函数式编程术语中似乎不正确。例如
let mutable albums : DbSet = null
let mutable genres : DbSet = null
member x.Albums
with get() = albums
and set(value) = albums <- value
member x.Genres
with get() = genres
and set (value) = genres <- value
有没有更好的方法来做到这一点?非常感谢您的建议。
【问题讨论】:
-
一件事——除了 Pad 和 TomasPetricek 的出色答案:如果你真的想成为“功能性”,那么我会首先检查你需要类或类结构的假设地方。自动属性通过将给定类的内部暴露给应用程序的其余部分来破坏良好的信息隐藏。如果您需要暴露给应用程序其余部分的类的内部,那么您可能一开始就不需要该类。我想我的意思是,如果你真的想从功能上摆脱一切都必须在类中的想法。
-
哦,还有一件事——鉴于您正在从事的工作,您可能会发现这篇博客文章很有帮助:bugsquash.blogspot.com/2011/11/lenses-in-f.html
标签: f#