gpt4 book ai didi

java - 将 Java 对象方法调用结果转换为 Clojure 映射

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:24 49 4
gpt4 key购买 nike

我是 Clojure 的新手,创建了一个简单的宏来调用 Java 类上的某些方法并将结果返回到 Clojure 映射中,这一切工作正常。 (我也知道 bean 函数,但是我使用的类不是 beans)。

我的问题是关于调用代码的。将 Java“方法”作为符号传递是更好的形式吗?

我什至不确定目前(在调用代码中).toString 是什么类型?一切正常,但不确定其惯用的 Clojure。

(defmacro obj-to-map 
[obj & body]
(let [afn (fn [[method kw]]
`(~kw (~method ~obj)))]
`(assoc {} ~@(mapcat afn (partition 2 body)))))

(obj-to-map "hello" .length :length .toString :value)

=> {:value "hello", :length 5}

最佳答案

.toString 等是调用代码中的符号。

我认为传递方法名称并使用“.”调用它会更好。

(defmacro obj-to-map 
[obj & body]
(let [afn (fn [[method kw]]
`(~kw (. ~obj ~method)))]
`(assoc {} ~@(mapcat afn (partition 2 body)))))

(obj-to-map "hello" length :length toString :value)

=> {:value "hello", :length 5}

关于java - 将 Java 对象方法调用结果转换为 Clojure 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214175/

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