这段 Clojure 代码有什么作用?

发布于 2024-12-07 22:23:26 字数 225 浏览 0 评论 0原文

(ns utils
   (:gen-class :name Utils
               :methods [#^{:static true} [sum [java.util.Collection] long]]))

(defn sum [coll] (reduce + coll))

(defn -sum [coll] (sum coll))

请解释一下这段代码!

(ns utils
   (:gen-class :name Utils
               :methods [#^{:static true} [sum [java.util.Collection] long]]))

(defn sum [coll] (reduce + coll))

(defn -sum [coll] (sum coll))

Please explain this code!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谈情不如逗狗 2024-12-14 22:23:26

由于没有使用 Clojure gen-class 工具,我的答案可能有点模糊:

这将生成必要的字节码,该字节码大约相当于以下 Java 伪代码:

class Utils {
  public static long sum(Collection coll) {
    // Here goes the necessary code to call  (sum coll)
    // through the Clojure runtime
  }
}
  • -sum 指示 Clojure 生成Java 方法。
  • (sum coll) 是对 sum 第一个定义的调用,它只是一个常规的 Clojure 函数定义

Having not used the Clojure gen-class facilities, my answer might be a little fuzzy:

This will generate the necessary byte-code which is about equivilant to the following Java pseudo code:

class Utils {
  public static long sum(Collection coll) {
    // Here goes the necessary code to call  (sum coll)
    // through the Clojure runtime
  }
}
  • -sum instructs Clojure to generate the Java method.
  • (sum coll) is the call to the first definition of sum, which is just a regular Clojure function definition
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文