我刚开始学习使用F#,想要在我的应用程序中创建一些可变的模型,并使用F#辨别联合代替类层次结构。然而,似乎没有办法“向下转换”一个辨别联合,并且“匹配”不会传播可变性。我该怎么办?
type Foo = {
mutable x: int
}
type FooBar =
| Foo of Foo
| Bar
let f = {x = 2};
do f.x <- 3; //All ok
let fb = Foo {x = 1}
do match fb with
| Foo {x = x} -> x <- 2 //"This value is not mutable"
| Bar -> ()