我正在尝试对{#1}这样的F#中的类使用某种聚合。您可以看到我已经将其设计为调用内部函数member this.FullName with get() = fullName()
的成员,并且似乎该值是在第一次调用时求值并在内部存储的。
如果我修改组成函数的值,它将继续返回第一次调用的值。我该如何更改?
如果同时更新LiteDB中的Object并再次读取它(如果看来),或者值已更新。
和其他问题: LiteDB中存储的成员和内部变量是什么。大家? 。我该如何控制它?
完整代码为:
let fullName() = (string Id) +" "+ Name
答案 0 :(得分:3)
您已经写了let fullName = (string Id) + " " + Name
。 fullName
之后没有参数,因此它不是一个函数(每次调用时都会被评估),而是一个值(只被评估一次)。如果希望每次调用它都对其求值,请通过添加一个参数将其转换为函数:
let fullName () = (string Id) + " " + Name
答案 1 :(得分:0)
像这样解决
type Article( Id: int, Name: string) as self =
let fullName() = (string self.Id) + " " + self.Name
...
member this.FullName with get() = fullName()
添加self
作为解决方案