【发布时间】:2022-01-05 03:25:29
【问题描述】:
Clojure 协议是否支持类型提示,以便可以像在静态类型语言中一样重载具有相同参数(类型提示除外)的相同方法名称?
例如,
(defprotocol IFoo
(get-val [this ^String astring])
(get-val [this ^AClass aclass]))
如果没有,我可以实现这个,还是我必须重命名方法?
【问题讨论】:
-
这能回答你的问题吗? Using a protocol with primitive arguments
-
由于协议适用于调度仅针对第一个参数的类型的情况,因此它们似乎不适合这种调度似乎针对多个参数的类型的用例。正如@amalloy 在评论中建议的那样,也许多方法可能更合适。
-
嗯,我尝试做的一件事就是在另一个中重用一个的实现。我看到如果没有某种方法来区分参数类型是不可能的,所以我想唯一的事情就是根据与类型关联的函数重命名方法。