繁体   English   中英

Clojure Java 互操作性

[英]Clojure Java Interoperability

我是 Clojure 的新手。 我正在尝试了解 clojure java interop。 我有一个需要在我的 Clojure 程序中使用的 java hashmap。 我正在尝试迭代哈希映射,但它给了我一个错误。

Main.java:

  package com.example;
  import java.util.HashMap;
  import java.util.Map;
  import clojure.java.api.Clojure;
  import clojure.lang.IFn;
  class Main {
       public static void main( String[] args ) {
          IFn require = Clojure.var("clojure.core", "require");
          require.invoke(Clojure.read("com.example.core"));
          IFn Print  = Clojure.var("com.example.core", "Print");
          Map<String, String> map = new HashMap<>();
          map.put("message", "hello world");
          Print.invoke(map);
   }
}

core.clj:

   (ns com.example.core
        (:gen-class))
   (defn Print [m]
       (doseq [[k v] map] (prn k v)))
   (defn -Print [m]
        (Print m))

当我尝试将程序作为 Java 应用程序运行时,它说 - 线程“main”中的异常 java.lang.IllegalArgumentException:不知道如何从以下位置创建 ISeq:clojure.core$map。

当我尝试将它作为 clojure 应用程序运行时,它会说 - 线程“main”中的异常 clojure.lang.ArityException: Wrong number of args (0) connected to: core/-main。

我试图在互联网上搜索资源,到处都说我们需要像使用 clojure map 一样使用 java hashmap。 但没有什么对我有用,我不知道我做错了什么。

任何帮助,将不胜感激。

(defn Print [m] (doseq [[kv] map] (prn kv)))

我认为地图支持成为我猜

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM