【问题标题】:How declare in a record a member with generic list of records in F#如何在 F# 中使用通用记录列表在记录中声明成员
【发布时间】:2026-01-08 04:15:02
【问题描述】:

我不知道如何传递一个通用的记录列表。我想这样做:

type TabularData<'T>= array<'T>
type Table = {title:string; data:TabularData<'T>} //This of course not work

type Cpu = 
  { name:string; load:int; }

type Memory = 
  { name:string; load:int; }

//F# not let me pass CPU or Memory

我想创建任何类型的记录列表,并将其传递给序列化为 json

P.D:有关此问题的更多信息。

我忘了补充主要问题。使用泛型,它可以广泛传播到其他功能。所以我需要用通用签名标记所有内容,所以可以更笼统地说:“我可以在这里有任何类型的记录吗?”

【问题讨论】:

  • 类型表 = {title:string;数据:TabularData} ?

标签: generics f# record


【解决方案1】:

您还需要将Table 类型设为通用:

type Table<'T> = {title:string; data:TabularData<'T>} 

而且由于你的两条记录有相同的字段,你可以使用Cpu.name 明确表示你正在创建一个带有 CPU 值的表:

{ title = "hi"; data = [| { Cpu.name = "test"; load = 1 } |]}

【讨论】: