2

下面的代码是什么意思?

type Update
    = First Field.Content
    | Last Field.Content
    | Email Field.Content
    | Remail Field.Content
    | Submit

(代码取自http://elm-lang.org/edit/examples/Intermediate/Form.elm第 36 行)

声明一个新类型Update?那些竖线是什么意思?

4

1 回答 1

1

是的,这声明了一个新类型Update。竖线可以读作“或”。也就是说,某种类型Update可以是:

  1. a First,其中包含一些类型的数据Field.Content
  2. a Last,其中包含一些类型的数据Field.Content
  3. an Email,其中包含一些类型的数据Field.Content
  4. a Remail,其中包含一些类型的数据Field.Content
  5. a Submit,它没有对应的数据。

要处理 type 的值Update,可以使用case-of语法来区分不同的可能值:

update : Update -> State -> State
update upd st = case upd of
  First  content -> st -- do something in the situation that the Update is a First
  Last   content -> st -- do something in the situation that the Update is a Last
  Email  content -> st -- do something in the situation that the Update is a Email
  Remail content -> st -- do something in the situation that the Update is a Remail
  Submit -> st -- do something in the situation that the Update is a Submit

我会在 Elm 网站上添加一个文档链接,但它正在为新的 0.14 版本重写。我以后可能会回来编辑它;)

于 2014-12-11T14:16:15.960 回答