【发布时间】:2017-12-16 01:21:43
【问题描述】:
我有这个模拟:
init : (Model, Cmd Msg)
init = ({ dog = List Dog }, Cmd.none)
type alias Dog =
{ name : String
, age : Int
, price : Float
, extra = List Extra
}
type alias Extra =
{ allergies : List String
, wishes : List String
}
[{ name = "Hot"
, age = 1
, price = 300.5
, extra = [{...}]
},
{ name = "Dog"
, age = 3
, price = 150.0
, extra = [{...}]
}]
我只想在代码的确定部分删除 Dog 的“额外”:
[{ name = "Hot"
, age = 1
, price = 300.5
},
{ name = "Dog"
, age = 3
, price = 150.0
}]
我可以通过映射整个列表并通过删除“额外”出现来生成一个新列表来做到这一点:
removeExtraOfDogs dogList =
(dogList |> List.map (\dog ->
{ name = dog.name
, age = dog.age
, price = dog.price
}
))
但我想让它动态地传递额外的内容以删除,而不必知道类型中有哪些变量并重新创建它
【问题讨论】:
-
你为什么要删除一个字段?为什么不用 `{ name, age, price }` 创建一个新的类型别名?
-
@naomik,因为在我正在开发的项目中,它有 +50 种类型,我需要做与记录 1 或 2 项相同的事情。原因:我需要以 .csv 格式导出,我不希望“额外”出现。
-
我建议您阅读 Elm 中的 Json 编码/解码。相同的规则将适用于编码 Csv - 我只说阅读 Json 是因为您可能会找到更适用的搜索结果
-
我理解你的回答。但是,在创建 Json 的工作和执行这项古老的工作之间。抱歉,我更喜欢古老的方式。
-
我不明白你的意思
标签: elm