gpt4 book ai didi

oop - 什么是谓词调度

转载 作者:行者123 更新时间:2023-12-03 10:36:20 24 4
gpt4 key购买 nike

我最近在 Clojure 中看到了很多关于谓词调度的讨论,想知道这件事是否有什么问题。换句话说,什么是谓词调度,它与泛型函数、OOP 多态性和模式有何不同?
谢谢

最佳答案

已编辑: Clojure 多方法不是谓词调度。

在传统的面向对象编程中,多态性意味着您可以拥有一个方法的多个实现,而被调用的确切实现取决于您调用该方法的对象的类型。这是类型调度。

Clojure 多方法对此进行了扩展,以便任意函数可以决定调用哪个实现。在 Clojure 表单中 (defmulti name f) , 函数 f是调度函数。

调度函数可以是class ,在这种情况下,您将返回键入 dispatch。但该功能可以是其他任何功能:计算调度值,在数据库中查找内容,甚至调用 Web 服务。

真正的谓词调度可能允许每个方法实现指定一个或多个调度函数(谓词)来决定何时应用该方法。这比多方法更通用,但实现起来更复杂。 Clojure 不支持它。

泛型函数是来自其他 Lisp 的术语。例如,Common Lisp 提供 generic functions它可以在类型和一组受限的其他函数上调度。

关于oop - 什么是谓词调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671627/

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