gpt4 book ai didi

elm - Elm中如何实现继承

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

type alias Car = { model : Model, year: Int }


type Model = Crv | Enzo | Mustang | Viper

-- I can do this
enzo = Car Enzo -- partial Contructor
> myE<function> : Int -> Repl.Car

myEnzo = enzo 2018
> { model = Enzo, year = 2018 } : Repl.Car

-- but i CANNOT do this
enzo2017 = Car { year: 2017 } -- INVALID

我如何制作一个简单的构造函数,它不会强制我按定义的顺序列出属性。

最佳答案

当谈到函数式编程时,我们需要用一些概念“重新开始”。在这种情况下,混淆似乎与构造函数有关。Elm 中的记录构造函数不同于面向对象语言中的对象构造函数。

记录构造函数不创建记录,它只创建一个可以创建记录的函数。它通过部分应用程序来做到这一点。

在部分应用中,您只能按顺序给出参数。这是在 lambda 演算中定义的,我相信它不是 Elm 特有的。在使用记录构造函数创建记录的情况下,更改参数的顺序不会更改结果。

我们可以使用这个方便的函数 flip 以相反的参数顺序返回相同的函数:

enzo2017 = flip Car 2017
myEnzo2017 = enzo2017 Viper

关于elm - Elm中如何实现继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48496672/

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