gpt4 book ai didi

list - F#联合类型列表

转载 作者:行者123 更新时间:2023-12-03 15:47:01 25 4
gpt4 key购买 nike

我想要一份报告 list 。报告可以是详细信息或部分类型。

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”,并且在第二种情况下类似。

我是不是因为想做这样的事情而发疯?我应该以不同的方式思考问题吗?因为报告是详细信息或摘要,报告列表不应该接受详细信息或摘要吗?如果不是详细信息或摘要列表,什么是报告列表?

谢谢。

最佳答案

你的语法有点错误:

type Report = Detail of Detail | Summary of Summary

reports <- (Detail detail)::reports
// or
reports <- (Summary summary)::reports

在您的代码中,您基本上刚刚定义了 Report类型为具有两个可能值的枚举 DetailsSummary (这些就像标签,而不是上下文中不同子类型的类型)。 F# 中的可区分联合被显式标记,因此您还必须使用联合构造函数之一来创建一个实例以放入列表。

关于list - F#联合类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com