В вашем вопросе есть некоторая двусмысленность.Вы хотите иметь возможность хранить get<'t>
в записи для одной конкретной 't
для каждой записи, или вы хотите, чтобы сама запись сохраняла «универсальную» функцию, такую как get<_>
?
Если первое, то TeaDrivenDev s ответ будет работать.
Если последнее, то не существует абсолютно простого способа сделать это с системой типов F #: поля записи не могут быть общими значениями.
Однако, есть достаточно чистый обходной путь, который заключается в объявлениитип интерфейса с универсальным методом и сохраните экземпляр интерфейса в вашей записи, например:
type OptionGetter = abstract Get<'t> : obj->obj->'t option
type MyType = { AFunc: OptionGetter }
let get<'t> var1 var2 : 't option = None // your real implementation here
let myRecord = { AFunc = { new OptionGetter with member this.Get v1 v2 = get v1 v2} }
let test : int Option = myRecord.AFunc.Get "test" 23.5