clojure - 组合字符串和变量时避免额外的空格

clojure - avoid extra whitespace when combining string and variable

我正在编写一个程序,该程序使用 printl-str 来执行汇编语言的 return 命令。我需要在我的代码中使用变量,我遇到了这个问题,函数将 return 我不想要的额外空白:

(defn pushConstant [constant]
   (println-str "@" constant "\r\nD=A\r\n@SP\r\nA=M\r\nM=D\r\n@SP\r\nM=M+1"))

Where 而不是 having,假设常量 = 17

@17
D=A
@SP
A=M
M=D
@SP
M=M+1

我有:

@ 17
D=A
@SP
A=M
M=D
@SP
M=M+1

我的汇编代码有问题。在很多这样的情况下,我都有这个问题。我很高兴听到有关如何避免字符串和变量之间出现额外空格的建议。

坦率地说,我会将其实现为看起来更像以下内容:

(defn pushConstant [constant]
  (->> [(str "@" constant)
        "D=A"
        "@SP"
        "A=M"
        "M=D"
        "@SP"
        "M=M+1"]
       (interpose "\r\n")
       (apply str)))

这样一来,您就没有一个又大又难看的格式字符串,而是将您的操作分解成小的、可读的部分。

也就是说,这里对您有所帮助的部分是 (str "@" constant),将您的 @ 与不添加空格的参数相结合。

使用仅连接(println 交错空格)的 str 创建字符串:

(defn pushConstant [constant]
   (println-str (str "@" constant "\r\nD=A\r\n@SP\r\nA=M\r\nM=D\r\n@SP\r\nM=M+1")))