我正在编写一个使用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
我的汇编代码存在问题。在很多这样的情况下我都有这个问题。我很高兴听到关于如何避免字符串和变量之间的额外空格的建议。
答案 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")))