我有一个哈希映射.我想迭代值并根据值的类型替换它们中的每一个.如果该值是整数,请将其替换为true,如果不是,则将其替换为false.我希望这返回一个新的哈希映射,每个值都更新为true或false.
(defn my-function [hash-map]
(loop [hash-map hash-map]
(for [value (vals hash-map)]
(if (= Integer (type value))
(recur (assoc hash-map key true))
(recur (assoc hash-map key false))))))
Run Code Online (Sandbox Code Playgroud)
这不会起作用,因为Clojure Can only recur from tail position,但这是我想要做的一般想法.有任何想法的有效方法吗? if-let而update-in似乎是潜在的解决方案,但我不能完全掌握它们.
为了学习Clojure,我正在做一个小小的Tic Tac Toe游戏.在相对轻松地完成游戏的第一部分之后,我一直在努力构建智能电脑播放器.
对于我正在编写的测试来帮助指导这个,我想检查计算机是否选择了现货9,如果它是计算机轮到这个板子:
X | O | 3
4 | X | O
7 | 8 | 9
要开始游戏,电路板就像这样定义,作为一个带有键值对的地图,表示电路板上的位置和该空间的内容:
(def board {1 "1" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6" 7 "7" 8 "8" 9 "9"})
Run Code Online (Sandbox Code Playgroud)
我对如何解决这个问题有一些想法.一个是定义这样的获胜集:
(def winning-sets
[[(board 1) (board 2) (board 3)],
[(board 4) (board 5) (board 6)],
[(board 7) (board 8) (board 9)],
[(board 1) (board 4) (board 7)],
[(board 2) (board 5) (board 8)],
[(board 3) (board 6) (board 9)],
[(board …Run Code Online (Sandbox Code Playgroud) 过去几周我一直在编写一个简单的 Java 服务器。
首先,我想根据启动服务器的位置显示文件系统。例如,如果您在src目录中启动服务器,打开浏览器,然后转到 localhost:5555,您将看到src. 每个都会被链接起来。我的工作正常。
如果您单击一个目录,它会显示其内容(就像我提到的那样)。如果您单击某个文件,它会读取该文件并以纯文本形式显示该文件。如果您单击图像,它将提供该图像。这一切都发生在浏览器中,您可以使用后退按钮返回到之前查看的目录列表或文件。这也可以正常工作并且不使用外部库。
这是我用来读取文本文件的代码(使用阅读器):
private String readFile() {
BufferedReader reader;
String response = "";
try {
FileReader fileReader = new FileReader(requestedFile);
reader = new BufferedReader(fileReader);
String line;
while ((line = reader.readLine()) != null) {
response += line + "\n";
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
Run Code Online (Sandbox Code Playgroud)
这是我用来提供图像的代码(输入流而不是阅读器):
public byte[] getByteArray() throws IOException {
byte[] byteArray = new byte[(int) requestedFile.length()];
InputStream inputStream; …Run Code Online (Sandbox Code Playgroud) 通过Clojure文档阅读,我对这个reduce函数的一个例子感到困惑.我明白了什么reduce,但在这个例子中有很多事情发生,我不确定它是如何一起工作的.
(reduce
(fn [primes number]
(if (some zero? (map (partial mod number) primes))
primes
(conj primes number)))
[2]
(take 1000 (iterate inc 3)))
=> [2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 …Run Code Online (Sandbox Code Playgroud) 我上课了.
我在该类的构造函数中初始化一个变量.
我调用一个包含while循环的方法,并每次递增变量.
我编写了一个测试来检查方法被调用后的变量值(并通过while循环一次).
public class ThreadGenerator implements Runnable {
private int requests;
private int limit;
public ThreadGenerator() {
requests = 0;
}
public void setRequestLimit(int anyLimit) {
this.limit = anyLimit;
}
public void generateThread() {
new Thread(this).start();
}
public void run() {
while(requests < limit) {
try {
// do some stuff
requests++;
// close some stuff
} catch (IOException e) {
e.printStackTrace();
}
}
}
public int getRequests() {
return requests; // calling this method from …Run Code Online (Sandbox Code Playgroud)