"编程是否为抽象" Clojure中的原理和鸭子打字一样吗?如果没有,有什么区别?
以下是http://www.braveclojure.com/core-functions-in-depth/的引用:
原因是Clojure定义了map和reduce函数 序列抽象,而不是特定的数据结构。如 只要数据结构响应核心序列操作( 功能优先,休息和缺点,我们将在一个更密切关注 那一刻),它将与map,reduce和其他序列的oodles一起工作 功能免费。这就是Clojurists通过编程来表达的意思 抽象,这是Clojure哲学的核心原则。
我认为抽象是命名的操作集合。如果你可以的话 对某个对象执行所有抽象操作,然后执行 object是抽象的一个实例。我甚至认为这样 编程之外。例如,电池抽象包括 操作“将导电介质连接到其阳极和阴极”, 并且操作的输出是电流。无论如何 电池由锂或土豆制成。这是一个电池 只要它响应定义电池的操作集。
数据类型按行为被识别为抽象类的一部分("响应")。这不是鸭子打字的本质吗?谢谢你的意见。