gpt4 book ai didi

records - 替代 Elm 记录扩展

转载 作者:行者123 更新时间:2023-12-04 21:11:27 24 4
gpt4 key购买 nike

我正在尝试将库从 Elm 0.15 迁移到 0.16。记录扩展机制已被删除。

My library提供对物体的物理计算(表示为记录),并使用记录扩展允许用户添加关于物体的标签和其他元数据。

我的 example code通过在创建后向所有主体添加标签来显示此用法:

labeledBodies = map (\b -> { b | label = bodyLabel b.restitution b.inverseMass }) someBodies

这个带标签的 body 列表也被传递到图书馆:
main = Signal.map scene (run labeledBodies tick)

什么样的作品:硬编码 meta参数进入 Body像这样:
type alias Body a = {
pos: Vec2, -- reference position (center)
velocity: Vec2, -- direction and speed
inverseMass: Float, -- we usually use only inverse mass for calculations
restitution: Float, -- bounciness factor
shape: Shape,
meta: a
}

但这使得 API 更加笨拙,因为它迫使辅助函数采用额外的参数。有没有更优雅的方法来处理这种变化?

最佳答案

如果meta怎么办字段类型为 Dict String String ?那么你就不必做任何疯狂的类型变量笨拙了。但是,您无法保证您传入的所有记录确实都有标签,因此您必须使用 Maybe String当您这样做时 Dict.get "label" r.meta .

关于records - 替代 Elm 记录扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33844979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com