2015-06-13 7 views
5

Utknąłem w tym, jak przekazać ogólną listę rekordów. Chcę to zrobić:Jak deklarować w rekordzie członka z ogólną listą rekordów w F #

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 

Chcę stworzyć dowolną listę rekordów dowolnego typu, i przekazać ją wokół serializacji do JSON

P.D: Więcej informacji na temat tego problemu.

Zapomniałem dodać główny problem. Używając generyków rozprzestrzenia się szeroko na pozostałe funkcje. Więc muszę oznaczyć WSZYSTKO ogólną sygnaturą, więc można być bardziej ogólnym i powiedzieć: "Mogę tu mieć jakieś zapisy?"

+1

typ Tabela <'T> = {title: string; dane: TabularData <'T>}? –

Odpowiedz

7

Musisz zrobić rodzaj Table generic też:

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

A ponieważ dwa rekordy mają takie same pola, można użyć Cpu.name wyraźnie powiedzieć, że tworzysz tabelę z wartościami CPU:

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