Elm的可扩展记录的构造函数/ Json。对象层次结构的解码

时间:2016-03-08 10:07:17

标签: elm

我们说我有以下类型定义:

type alias EntityBase =
    { id: Int
    , name : String
    }


-- Derived types

type alias PersonSpecfic entityBase =
    { entityBase 
        | age: Int
        , address : String
    }
type alias Person = PersonSpecfic EntityBase

当前版本的Elm(0.16)中的类型Person / PersonSpecfic是否有任何构造函数?

(编译器说"Cannot find variable ``PersonSpecfic``"

这与能够为类型层次结构创建Json解码器相关。

2 个答案:

答案 0 :(得分:1)

由于elm 0.16,语言中不再存在记录扩展名。

部分地,作为副作用,没有以“通用”/“扩展”方式定义的记录类型的构造函数。

可在此主题中找到更多详细信息: https://groups.google.com/forum/#!searchin/elm-discuss/constructor/elm-discuss/AaL8iLjhEdU/JSAXV2oACgAJ

答案 1 :(得分:0)

是的,这看起来像编译器错误。您始终可以创建自己的构造函数以在JSON解码中使用:

createPerson : Int -> String -> Int -> String -> Person
createPerson id name age address =
  { id = id
  , name = name
  , age = age
  , address = address
  }