gpt4 book ai didi

clojure - 如何在 Clojure 中消除歧义

转载 作者:行者123 更新时间:2023-12-02 10:22:29 25 4
gpt4 key购买 nike

我在不导入/需要/使用任何其他包的命名空间中拥有此函数:

(defn crash [msg]
(throw (Throwable. msg)))

Cursive(IntelliJ IDEA IDE 插件)突出显示 Throwable 并给我消息无法消除 Throwable 重载的歧义。我收到与 ExceptionError 相同的消息。

我不明白这条消息的来源 - 我怀疑这些 Java 类是否在 Java 语言之外的任何其他 jar 文件中定义。我能做些什么来让这条消息消失吗?

这些位于project.clj中:

  :dependencies [[org.clojure/clojure "1.6.0"]
[net.mikera/imagez "0.8.0"]
[org.clojure/math.numeric-tower "0.0.4"]]

最佳答案

Throwable 有两个 1-arg 构造函数 ( doc ):一个期望一个 String,另一个期望一个 Throwable

在运行时,Clojure 会计算出来(因为在这种特定情况下,对象不可能同时是 StringThrowable),但这需要使用反射(reflection)。

msg 添加类型提示以指定您希望使用的重载将消除反射的需要,并有望使 Cursive 平静下来。

(defn crash [^String msg]
(throw (Throwable. msg)))

关于clojure - 如何在 Clojure 中消除歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472894/

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