【发布时间】:2016-07-15 10:24:04
【问题描述】:
我创建了以下类型,(省略了一些不必要的细节)
type alias Mover =
{ x : Int
, y : Int
}
type Piece
= Enemy Mover
| Player Mover
我使用这些函数来创建它们
enemy : Int -> Int -> Piece
enemy x y =
Enemy { x = x, y = y }
player : Int -> Int -> Piece
player x y =
Player { x = x, y = y }
但我发现自己必须先使用此功能才能真正使用它们...
toMover : Piece -> Mover
toMover piece =
case piece of
Enemy mover ->
mover
Player mover ->
mover
...这似乎有些麻烦。这是我应该这样做的方式,还是我让自己变得更加困难?我希望能够将Player 与一些Enemy 实例保持在同一个列表中,有时能够区分它们之间的区别,但也能够编写适用于这两种类型的函数,(子类型?)没有每次都得打电话给toMover。
【问题讨论】:
标签: types type-conversion elm