gpt4 book ai didi

Erlang:用方法和字段定义一些对象类

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

如何在 Erlang 中使用方法等(如整数比较)定义对象的某些类(或类型)?

例如,我该怎么做:

qsort([Pivot|T]) ->
qsort([X || X <- T, X =< Pivot])
++ [Pivot] ++
qsort([X || X <- T, X > Pivot]).

如果我想对一些对象的列表进行排序,例如人。

最佳答案

很快的回答:你不想去那里。

更长的答案:Erlang 不是 Java 等“传统意义上”的面向对象语言。但它有几种机制可以作为对象的替代品:首先,闭包可以很容易地对对象的等价物进行编码,尽管这种编码方式非常笨拙以至于几乎从未使用过。相反,人们倾向于“挑选”并从 OO 中获得他们需要的特定想法,无论是封装、继承、多态等等。

其次是流程。进程是一个单独的封装实体,您可以向其发送消息和接收答案。这与“一个类是一个单独的封装实体,您可以使用方法对其进行操作”几乎相同。由于生成进程的成本很低,因此将进程用作 OO 风格的对象并不是问题。

第三,有些人喜欢使用参数化模块,就好像他们将 OO 风格的代码带回了语言一样。

第四,有一流的功能。由于您可以像传递数据一样轻松地传递函数,因此您通常可以使用它来概括代码,而不是构建对象层次结构。

总结:如果您以惯用的风格编写 Erlang,您将很少会发现需要与“类”等价的东西。

关于Erlang:用方法和字段定义一些对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933055/

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