【发布时间】:2021-10-12 15:46:44
【问题描述】:
我有一些重复的代码。
type RecordA = {
Name: string
// ...
}
type RecordB = {
Name: string
// ...
}
val getTheHandler: (name: string) -> (() -> ())
let handleA (record: RecordA) =
(getTheHandler record.Name) ()
let handleB (record: RecordB) =
(getTheHandler record.Name) ()
我想知道是否可以编写一些通用函数来简化/重构getTheHandler record.Name。在尝试重构 sn-p 时,编译器希望选择另一种记录类型。
所以尝试这个,我得到一个编译器错误:
let shorter (record: 'T) =
(getTheHandler record.Name) ()
// later:
shorter myRecordA // FS0001: This expression was expected to have type RecordB but here has type RecordA
这可能吗?为每个记录类型添加成员函数是唯一的方法吗?
【问题讨论】:
标签: f#