gpt4 book ai didi

clojure - Clojure 控制台中的 Backspace esc char

转载 作者:行者123 更新时间:2023-12-02 13:45:02 24 4
gpt4 key购买 nike

我正在学习 Clojure。

为了练习,我开始重写为我儿子编写的 Java 应用程序,以解决不等式(例如 3 + 2 ? 7)。

在java中我做了(注意使用反斜杠转义字符)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

public class JavaTest {
public static void main(String[] args) throws Exception {
System.out.print("3 + 2 ? 7\b\b\b");
System.out.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.readLine();
}
}

并查看预期结果:光标放置在问号位置,当我写入字符时,它会覆盖问号。 correct output from java

但是当我在 Clojure 中做同样的事情时(我相信是这样)

(print "3 + 2 ? 7\b\b\b")
(flush)

(let [reader (java.io.BufferedReader. *in*)]
(.readLine reader))

我看到光标被放置在正确的位置几毫秒,然后移动到行尾。当我放置一个字符时,它被放置在我打印的字符串的最末尾。 incorrect output from clojure

作为一种解决方法,我可以使用 clojure-lanterna 库,如建议的 here ,但我想在没有任何库的情况下解决这样一个简单的问题(就像我在 Java 中所做的那样)。

对此有什么想法吗?或者也许有人可以解释这种行为的原因。我尝试在 Clojure 源代码中找到它,但没有成功。

提前致谢!

最佳答案

使用clojure而不是clj

clj将普通的Clojure REPL包装在rlwrap中,提供了更符合人体工学的命令行编辑体验;大概在这里它以某种方式弄乱了光标。

关于clojure - Clojure 控制台中的 Backspace esc char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52768089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com