clojure - 在组合字符串和变量

时间:2016-11-20 18:59:07

标签: string clojure println removing-whitespace

我正在编写一个使用printl-str返回汇编语言命令的程序。我需要在我的代码中使用变量,而我遇到这个问题,函数将返回额外的空格,我不想要它:

(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"))

而不是假设常数= 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

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

2 个答案:

答案 0 :(得分:3)

坦率地说,我实现它看起来更像是以下内容:

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

这样你就没有一个大的丑陋格式字符串,而是把你的操作分解成小的,可读的部分。

也就是说,这里对你有所帮助的是(str "@" constant),将你的@与没有添加空格的参数组合在一起。

答案 1 :(得分:3)

使用str创建字符串,它只连接(println交​​错空格):

(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")))