f# - 添加到 fsharp 中的类型

标签 f#

我在 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/

相关文章:

c# - Xamarin 表单(Android): OnCreate bundle is null

f# - Azure 存储帐户连接

function - F#:如何使用参数Byref Int调用函数

f# - 在 F# 中通过组合定义 EntryPoint

具有多个输入参数的 F# 函数组合

logging - 如何在 F# Fable 中登录 Application Insights?

list - 如何将字符串列表转换为 F# 中的字符串列表

f# - 如何在 F# 中使用命名参数

f# - 管道、合成和 curry

wpf - 用 Gjallarhorn 显示对话窗口的好方法是什么?