在Clojure

时间:2016-08-25 13:21:18

标签: java clojure

是否可以在Clojure中将juxt与Java对象的方法结合使用?

基本上我想要实现的是

((juxt .method1 .method2) myinstance)

.method1method2myinstance的实例方法,它是某个Java类的实例。

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

或者只是为此制作一个宏,这会将正常typeFrom :: Question -> * typeFrom (Simple {a}{typeableDict4a}{showDict4a} message parser) = a runQuestion :: (q :: Question) -> IO (typeFrom q) 行为与print行为结合起来。像这样:

juxt

例如:

.method

扩展为以下内容:

user> (defmacro juxt+ [& fns]
        (let [x (gensym)]
          `(fn [~x] ~(mapv #(list % x) fns))))
#'user/juxt+

在repl中:

(juxt+ .getName (partial str "string val: ") .getAbsolutePath vector)

答案 1 :(得分:4)

尝试在匿名函数中封装方法调用:

((juxt #(.method1 %) #(.method2 %)) myinstance)