小编rzv*_*rzv的帖子

映射哈希映射中的每个值

我有一个哈希映射.我想迭代值并根据值的类型替换它们中的每一个.如果该值是整数,请将其替换为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-letupdate-in似乎是潜在的解决方案,但我不能完全掌握它们.

clojure hashmap functor

11
推荐指数
2
解决办法
6642
查看次数

Clojure:迭代向量向量以找到满足特定条件的第一个向量

为了学习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)

iteration vector clojure tic-tac-toe

5
推荐指数
1
解决办法
1097
查看次数

用 Java 读取 PDF 文件 - 无外部库

过去几周我一直在编写一个简单的 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)

java pdf file-io

5
推荐指数
1
解决办法
6456
查看次数

Clojure Docs:理解Reduce函数的这个例子

通过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)

reduce clojure

3
推荐指数
1
解决办法
618
查看次数

Java:修改和访问在构造函数中初始化的变量

我上课了.
我在该类的构造函数中初始化一个变量.
我调用一个包含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)

java constructor scope variable-assignment

0
推荐指数
1
解决办法
1927
查看次数