我试图通过主要的Java体验来改变Clojure,我正在尝试解决Clojure中的问题。我可以用Java做到这一点并不是很难转换为Clojure但我只是看不出它会如何工作....
我想要做的是遍历一个字符串数组,然后将字符串放入映射中,我的伪代码在下面,但看起来很像Java
private static void putToMap(String w)
{
String thisw = getthisw(w);
if (!map.containsKey(thisw))
{
map.put(thisw, w);
map.add(w);
}
}
private static String getthisw(String w)
{
char [] wArray = w.toLowerCase().toCwarArray();
Arrays.sort(wArray);
return new String(wArray);
}
这就是我在Clojure中尝试的方法,但我不知道如果有任何数据,我将如何从输出中给出的数据中获取数据?
我从运行我得到的输出是这个....我将如何使用它迭代?如果是这样我将如何使用给出的数组?
#<String[] [Ljava.lang.String;@790da477>
我的Clojure功能......
(def strings '["one" "two" "three" "four" "five" ])
(defn sort [strings]
(into-array String strings))
输入示例:
Array of Strings ["ONE"] ["TWO"] ["THREE"] ["FOUR"] ["FIVE"]
输出示例:
Map with strings converted to lowercase "one" "two" "three" "four" "five"
答案 0 :(得分:3)
在这里确切地说出你想要的东西真的很难,但似乎你正在用Java的方式思考。一个简单的map
会将您的字符串转换为其小写对应列表。
(def strings ["ONE" "TWO" "THREE" "FOUR" "FIVE"])
(defn convert [strings]
(prn (map clojure.string/lower-case strings)))
然后你可以在你的REPL中调用它并获得:
user=> (convert strings)
("one" "two" "three" "four" "five")