【发布时间】:2016-09-15 05:58:24
【问题描述】:
看了一眼 elm 代码,发现了以下类型定义:
type Cmd msg = Cmd
我似乎无法理解这是如何工作的。任何人都可以解释?
【问题讨论】:
标签: elm
看了一眼 elm 代码,发现了以下类型定义:
type Cmd msg = Cmd
我似乎无法理解这是如何工作的。任何人都可以解释?
【问题讨论】:
标签: elm
这不是递归类型定义,而是将类型 Cmd 定义为具有一个标签 Cmd 的联合类型,其中不包含任何额外信息。通常这样的定义是为了表明该类型表示的值在 elm 中没有单独的含义。
在这种情况下,类型是这样定义的,因为 Cmd 上的所有操作都隐藏在平台代码中,因此用户无需检查或解构 Cmd 值。 Cmd 需要公开一个类型变量以保持 Cmd 值的类型安全,因为它们封装了一个承诺来产生给定类型的消息,并且可以通过 Cmd.map 更改该类型。
【讨论】: