【发布时间】:2018-12-29 09:25:59
【问题描述】:
我是 Clojure 的新手,我正在尝试在 Clojure 中迭代 java hashmap。
我有以下简单的哈希图{message=[hello, world]}。
我正在编写以下 clojure 程序来对其进行迭代。
Clojure 代码:
(defn Print [m]
(doseq [[k v] m]
(prn k)
(doseq [[p q] v]
(prn p)
(prn q))))
Java 代码:
package com.example;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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");
List<String> list = new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();
list.add("hello");
list.add("world");
map.put("message", list);
Print.invoke(map);
}
}
我得到的输出是:
"message"
\h
\e
\w
\o
我正在尝试获取输出: 消息你好世界
谁能告诉我我做错了什么?
【问题讨论】:
-
在我也在写的clojure代码中- (defn -main [m] (Print m))
标签: java clojure clojure-java-interop