问题标签 [multimethod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
578 浏览

clojure - 定义 Clojure 多方法

我在一个命名空间中有以下内容shapes

现在在命名空间中执行以下shapes命令:

返回true。但是当我在一个命名空间中执行以下操作时,我实际上实现了多种绘图方法,

它返回false。因此,即使我有正确的多方法调度函数,我也会收到一条错误消息,提示“未找到调度函数”。

我错过了什么吗?在一个巨大的命名空间中实现所有类型的形状对我来说似乎毫无意义。

0 投票
1 回答
599 浏览

oop - 多调度多方法

它们是什么,它们之间有什么不同?

许多来源,如Wikipedia,声称它们是同一件事,但其他人明确表示相反,如这个问题中的sbi

第一:“访问者模式是一种在 C++ 中模拟双重调度的方法。” 这是,呃,不完全正确。实际上,双重分派是多重分派的一种形式,它是在 C++ 中模拟(缺失的)多方法的一种方式。

0 投票
3 回答
319 浏览

clojure - 我可以仅在 Java 类上使用 Clojure 多方法吗?

对于我是否只能在由 Java 类表示的 clojure 结构上使用 clojure 多方法,或者我可以基于多方法来调度结构或其他属性,我有点困惑?

0 投票
1 回答
233 浏览

clojure - 我可以在 Clojure 中的类型和属性上调度一个多方法吗?

我的 Clojure 应用程序中有一个名为“visualize”的方法,据说它可以渲染我的应用程序的任何部分。我遇到的问题是我的应用程序中的某些东西是 Java 类,而有些是哈希映射,其字段内部使用 clojure :: idiom 标记映射的类型。我知道我可以使用多映射在类型或某些内部类型上进行调度,但我该如何做到这一点,以便相同的多方法同时适用于两者。

0 投票
1 回答
1042 浏览

clojure - 我可以使用 Clojure 的派生来创建我的 defrecord 类类型的层次结构吗?

我想做类似的事情:

这可能吗?

更新:

我已经意识到这是不可能的,所以我正在做这样的事情:

这有意义还是有更好的方法?

0 投票
3 回答
2815 浏览

c++ - 为什么 C++ 中没有多方法?

我读了很多关于如何在 C++ 中实现多方法的文章:

  1. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1529.html
  2. http://www.codeproject.com/KB/recipes/mmcppfcs.aspx
  3. http://lambda-the-ultimate.org/node/2590
  4. http://parasol.tamu.edu/people/peterp/omm/

为什么 C++ 中没有多方法?

为什么它们不受 C++ 标准的支持?

0 投票
3 回答
1817 浏览

java - Java有什么好的多方法实现吗?

我想知道是否有任何像 Lisp 一样好的 Java 多方法实现/库。

我发现了这个明显冻结的:JMMF

0 投票
2 回答
458 浏览

recursion - 自递归 clojure 多方法是嵌套分类问题的良好设计吗?

我有大量数据地图,每个地图都需要以嵌套方式分类。

即,给定的项目可能是 A 或 B(由函数确定),如果是 B,则它可能是 C 或 D(由另一个函数确定),依此类推。在每个阶段,更多与分类相关的数据可以添加到每个地图中。进行分类的功能本身非常复杂,可能需要引入额外的数据来进行确定。

自递归多方法是否是构建代码以执行此操作的好方法?我会派出迄今为止为一个项目确定的最具体的类型,或者在无能为力的情况下返回当前最好的分类。

可以在单个分类函数中使用嵌套的 ifs 来获得预期的效果,但天哪,太丑了。

多方法在这里是否合适,或者我是否过于复杂化并且错过了一种更简单的代码结构方式?

0 投票
2 回答
1464 浏览

clojure - 类 OR 关键字上的 Clojure 多方法

假设我有这个多方法

当我用 的子类调用它时Object,它会正确调度到第一个实现:

使用:mykwd它也可以按预期工作:

但是当我提供另一个关键字时,我得到了一个例外:

这个调度究竟是如何工作的?

是否可以为类继承保留这种行为,并且仍然有一个捕获所有关键字的“默认”实现?

编辑这个例子很简单,但我需要它来处理二进制函数。我真正的需要在下面。我不知道我该如何申请:default

然后我正在寻找一种方法来定义它何时argnil(:type mp)是什么的情况。这适用于 value for:type是一个类,但不适用于任何关键字:

0 投票
3 回答
1665 浏览

performance - clojure 多方法天生慢吗

我正在查看clojure.core 函数重新分组:

并认为将其重写为多方法会“更好”:

然而,当比较时间时,我惊讶地发现重写速度慢了 4 倍:

这是多方法的自然结果还是这里有其他问题?