我完全不知道为什么这段代码不会改变一系列类型的成员变量:
for p in prescrs do
p.ATC <- "A"
for c in p.Drug.Components do
for s in c.Substances do
s.DoseTotal.Adjust <- adjustKg
s.DoseTotal.Time <- "DAY"
s.DoseTotal.Unit <- s.DrugConcentration.Unit
s.DoseRate.Adjust <- adjustKg
s.DoseRate.Time <- "DAY"
s.DoseRate.Unit <- s.DrugConcentration.Unit
prescrs 是一系列 Prescriptions,它是一个非常简单的“POCO”,定义为具有成员值的类型。我不知道为什么这不起作用。
我尝试了一个简单的测试用例,例如:
type IterTest () =
member val Name = "" with get, set
member val IterTests = [] |> List.toSeq : IterTest seq with get, set
let iterseq =
[
new IterTest(Name = "Test1")
new IterTest(Name = "Test2")
]
|> List.toSeq
iterseq |> Seq.iter(fun x -> x.IterTests <- iterseq)
iterseq |> Seq.iter(fun x ->
x.IterTests
|> Seq.iter(fun x' -> x'.Name <- "itered"))
但是这里的结果与预期的一样。所以,甚至不能完全重现我的问题???
找到了解决方案(没有真正理解上面的问题)。当我第一次将 prescrs 序列转换为如下列表时:
let prescrs = prescrs |> Seq.toList
然后执行命令式循环,属性确实会发生变化。