我想要一份报告清单。报告可以是详细信息或部分类型。
module Data
type Section = { Header: string;
Lines: string list;
Total: string }
type Detail = { State: string;
Divisions: string list;
Sections: Section list }
type Summary = { State: string;
Office: string;
Sections: Section list }
type Report = Detail | Summary
然后在我的代码中,我想执行以下操作:
let mutable (reports:Report list) = []
...
reports <- detail::reports
// or
reports <- summary::reports
编译器在第一种情况下抱怨:“表达式应该具有 Report 类型,但这里具有 Detail 类型”,在第二种情况下也同样如此。
我想做这样的事是不是疯了?我应该以不同的方式思考这个问题吗?由于报告要么是详细信息,要么是摘要,因此报告列表不应该接受详细信息或摘要吗?如果报告列表不是详细信息或摘要列表,那么什么是报告列表?
Thanks.
你的语法有点错误:
type Report = Detail of Detail | Summary of Summary
reports <- (Detail detail)::reports
// or
reports <- (Summary summary)::reports
在您的代码中,您基本上刚刚定义了Report
类型为具有两个可能值的枚举Details
or Summary
(这些就像标签,而不是在此上下文中不同子类型的类型)。 F# 中的可区分联合被显式标记,因此您还必须使用联合构造函数之一来创建要放入列表中的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)