【发布时间】:2019-02-04 11:54:13
【问题描述】:
一位朋友试图让我相信 clojure 的好处,我正在尽我所能理解该语言。我浏览了很多网站并浏览了“Clojure for the Brave and True”一书,但我仍然缺少一些东西。
我的背景是面向对象编程,对我来说,程序对象代表现实世界的对象是我的第二天性。我读过 clojure 不是 OO,但我不明白 clojure 是做什么的。
这是一个示例(非常简化)。我正在编写一个用于计划退休收入的应用程序。它有一个储蓄账户类和一个养老金类。储蓄账户有余额和利率。它有一个 Withdraw 方法,可以在一年内取出指定的金额(传递的参数)。余额每年减少提取的金额并增加利息金额。您提取的金额永远不能超过余额。
养老金类有年收入和年增长率。这也有提款方法,但提款金额始终是年收入(每年增加百分比)。即它的计算方式与储蓄账户不同。
在我的 OO 程序中,这两个类都实现了定义 Withdraw 方法的协议,因此我的代码可以以相同的方式处理它们,而无需考虑它们的差异。
在 clojure 世界中,代表储蓄账户和养老金的东西。即,哪些结构将实例的数据以及对这些数据进行操作的方法收集在一起?在 OO 中,类定义了数据和方法。实例是数据的唯一出现。我定义类的代码文件告诉我关于类所代表的对象的所有信息。 clojure 是如何做到这一点的,或者它做了什么?
【问题讨论】:
-
如果你使用sql,你可能想看看这个库walkable.gitlab.io它反映了Clojure的数据驱动方法与OOP/ORM方法的对比
标签: clojure