在 F# 中使用另一种记录类型扩展记录类型
Extending a record type with another record type in F#
我有两种记录类型:
type Employee = {
Id: string
Name: string
Phone: string
}
type AuditLog = {
PerformedBy: string
PerformedOn: string
}
以下是记录类型的实例:
let emp = {
Id = "123"
Name = "Abc"
Phone = "999"
}
let log = {
PerformedBy = "234"
PerformedOn = "1/1/1"
}
有什么方法可以合并这两个实例的字段来创建新的 record/anonymous 记录类型,如下所示?
let combined = {
Id = "123"
Name = "Abc"
Phone = "999"
PerformedBy = "234"
PerformedOn = "1/1/1"
}
在 F# 中,记录类型不能以其他方式继承或组合。
要获得具有组合字段的类型,您唯一可以做的就是
到显式创建与现有 2 种类型无关的新记录
创建这样的类型匿名,@JL0PD 指向了匿名类型的文档。匿名类型在某些情况下可能非常有用,但在大多数情况下显式类型是更好的选择 - 使代码更具可读性。
创建一个包含 2 个字段的 2 种类型的记录,这并不是您要查找的内容。
像 Typescript 这样的一些语言有 交集类型 ,你可以在其中将一个类型定义为具有一组其他类型的字段(因为创建的类型的字段是 union 的组合类型,“intersection”对我来说听起来很奇怪)。我想您正在寻找它,但它在 F# 和大多数语言中不可用。
我有两种记录类型:
type Employee = {
Id: string
Name: string
Phone: string
}
type AuditLog = {
PerformedBy: string
PerformedOn: string
}
以下是记录类型的实例:
let emp = {
Id = "123"
Name = "Abc"
Phone = "999"
}
let log = {
PerformedBy = "234"
PerformedOn = "1/1/1"
}
有什么方法可以合并这两个实例的字段来创建新的 record/anonymous 记录类型,如下所示?
let combined = {
Id = "123"
Name = "Abc"
Phone = "999"
PerformedBy = "234"
PerformedOn = "1/1/1"
}
在 F# 中,记录类型不能以其他方式继承或组合。 要获得具有组合字段的类型,您唯一可以做的就是
到显式创建与现有 2 种类型无关的新记录
创建这样的类型匿名,@JL0PD 指向了匿名类型的文档。匿名类型在某些情况下可能非常有用,但在大多数情况下显式类型是更好的选择 - 使代码更具可读性。
创建一个包含 2 个字段的 2 种类型的记录,这并不是您要查找的内容。
像 Typescript 这样的一些语言有 交集类型 ,你可以在其中将一个类型定义为具有一组其他类型的字段(因为创建的类型的字段是 union 的组合类型,“intersection”对我来说听起来很奇怪)。我想您正在寻找它,但它在 F# 和大多数语言中不可用。