我在 fsharp 的任务中遇到了一些困难。
目前我已经预先声明了一个有用的类型,例如
type TESTA =
{ foo : Float
bar: factorA.double
}
由于类型的性质(在别处使用),我无法直接更改它(或以相同的方式重新声明它)。但是我需要向集合中添加另一个定义,只是一个简单的 bool 值,因此类型可能如下所示(如果我可以直接更改它)
type TESTA =
{ foo : Float
bar: factorA.double
truth: bool
}
如何在不直接更改类型的情况下获得相同的效果?我试过了:
type Final=
{ PartA: TESTA
truth: bool
}
但是创建这种“子类型”不允许我单独访问 foo/bar (就我可以测试而言):
let unittest =
{ Final.TESTA.foo = X <- this doesnt work :(
Final.truth = true <- this does work
}
谢谢
最佳答案
您的 Final
类型应该可以工作,您只需要创建 TESTA
手动输入。所以你可以做这样的事情:
let unittest =
{ Final.PartA = {foo = X; bar = Y};
Final.truth = true
}
如果您有很多这样的嵌套记录类型,您可能需要考虑尝试 Aether和它的 Lenses特征。
关于f# - 添加到 fsharp 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38959209/