【发布时间】:2017-05-08 05:29:28
【问题描述】:
Clojure 中的“抽象编程”原则与鸭子类型相同吗?如果不是,有什么区别?
这是来自http://www.braveclojure.com/core-functions-in-depth/的引用:
原因是 Clojure 定义了 map 和 reduce 函数 序列抽象,而不是特定的数据结构。作为 只要数据结构响应核心序列操作( 函数 first、rest 和 cons,我们将在 时刻),它将与其他序列的map,reduce和oodles一起使用 免费的功能。这就是 Clojurists 编程的意思 抽象,它是 Clojure 哲学的核心原则。
我认为抽象是命名的操作集合。如果你可以的话 对一个对象执行所有抽象操作,然后 object 是抽象的一个实例。我什至认为这样 编程之外。例如,电池抽象包括 操作“将导电介质连接到其阳极和阴极”, 操作的输出是电流。没关系 电池由锂或土豆制成。是电池 只要它响应定义电池的一组操作。
通过行为(“响应”)将数据类型标识为抽象类的一部分。这不就是鸭子打字的精髓吗?感谢您的意见。
【问题讨论】:
标签: clojure duck-typing