我不熟悉clojure,也不熟悉函数式编程。我尝试使用以下命令以预先排序的方式遍历树:
(def tree {:left 7 :val 4 :right {:left 4 :val 3 :right 1}})
(defn preorder
[tree]
(if
(nil? tree)(0)
(let [v (:val tree)
l (:left tree)
r (:right tree)]
(print-str (v (preorder l) (preorder r))))))但是当我调用函数(预序树)时,我得到了以下异常:java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn。有没有人能告诉我我犯了什么错误。
发布于 2014-10-19 11:20:45
(0)尝试将0作为函数调用:括号不是用于分组,而是用于调用函数(或宏)。相反,只需编写0即可。类似地,(v (preorder l) (preorder r))尝试将v作为函数进行调用。相反,您可能想要像(str v (preorder l) (preorder r))这样的东西。
https://stackoverflow.com/questions/26446827
复制相似问题