我正试图理解区分联合类型和记录类型; 具体来说,是如何将它们组合以实现最大可读性。以下是一个示例 - 假设一个运动队可以拥有积分(包括联赛积分和进球差),或者被暂停参加联赛,在这种情况下它既没有积分也没有进球差。以下是我尝试表达它的方式:
type Points = { LeaguePoints : int; GoalDifference : int }
type TeamState =
| CurrentPoints of Points
| Suspended
type Team = { Name : string; State : TeamState }
let points = { LeaguePoints = 20; GoalDifference = 3 }
let portsmouth = { Name = "Portsmouth"; State = points }
问题出现在最后一行,我说“State = points”。我得到了“表达式应该具有TeamState类型,但这里具有Points类型”的错误。如何解决这个问题?