【问题标题】:Clojure function throws casting exception on println? How can one keep function & correct error?Clojure 函数在 println 上抛出转换异常?如何保持功能并纠正错误?
【发布时间】:2022-11-20 05:17:03
【问题描述】:

在函数之外,代码按预期工作,但在以下代码中,它在 HackerRank 站点上返回异常 [线程“主”java.lang.ClassCastException 中的异常:java.lang.Long 无法转换为 clojure.lang.IFn]

如何保留函数结构并打印结果?

(defn sumTerm [hi lo] 
(if (< hi lo)
    (0)
    (let [
        terms (quot hi lo)
        tb (+ terms 1)
    ]
    (quot (* lo terms tb) 2)
    )             
))

(let [
     a (sumTerm ln 4)
     b (sumTerm ln 7)
     c (sumTerm ln 28)
     abc (- (+ (sumTerm 3 ln) (sumTerm 5 ln)) (sumTerm 15 ln))
 ]
 (println " abc= "(str abc))

【问题讨论】:

  • (0) 正在尝试呼叫 0。你在那里的意图是什么?你的意思是0返回0吗?

标签: clojure long-integer


【解决方案1】:

它无法按预期工作,除非您从未点击 (&lt; hi lo) 的“then”分支,因为您试图通过将 0 括在括号中来将其作为函数调用。

尝试将 (0) 替换为 0

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 2012-05-24
    • 2020-06-08
    • 2021-11-04
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多