Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
elm中的分组大小写表达式(0.18)_Elm_Case Statement - Fatal编程技术网

elm中的分组大小写表达式(0.18)

elm中的分组大小写表达式(0.18),elm,case-statement,Elm,Case Statement,在elm(0.18)中,有没有一种方法可以将一系列执行相同操作的大小写表达式组合在一起 例如: type Character = Sleepy | Happy | Grumpy | Dopey | Sneezy | Bashful | Doc | SnowWhite | Queen getKindOfCharacter : Character -> String getKindOfCharacter charact

在elm(0.18)中,有没有一种方法可以将一系列执行相同操作的大小写表达式组合在一起

例如:

type Character
    = Sleepy
    | Happy
    | Grumpy
    | Dopey
    | Sneezy
    | Bashful
    | Doc
    | SnowWhite
    | Queen


getKindOfCharacter : Character -> String
getKindOfCharacter character =
  case character of
    (Sleepy | Happy | Grumpy | Dopey | Sneezy | Bashful | Doc) ->
      "Dwarf"
    SnowWhite ->
      "Hero"
    Queen ->
      "Villain"

不需要,但您可以按如下方式重构类型:

type Character
    = Dwaft Dwarf
    | SnowWhite
    | Queen

type Dwarf
    = Sleepy
    | Happy
    | Grumpy
    | Dopey
    | Sneezy
    | Bashful
    | Doc

getKindOfCharacter : Character -> String
getKindOfCharacter character =
  case character of
    Dwarf _ ->
      "Dwarf"
    SnowWhite ->
      "Hero"
    Queen ->
      "Villain"
或者更好

type Character
    = Dwaft Dwarf
    | Hero Hero
    | Villain Villain

type Dwarf
    = Sleepy
    | Happy
    | Grumpy
    | Dopey
    | Sneezy
    | Bashful
    | Doc

type Hero
    = SnowWhite

type Villain
    = Queen
那么您就不需要
getKindOfCharacter
函数了,因为
Character
类型将提供相同的信息

let 
    hero : Character
    hero = Hero SnowWhite

    villain : Character
    villain = Villain Queen

    dwarf : Character
    dwarf = Dwarf Dopey
in
    ...