2016-11-20 49 views
0

我正在編寫一個使用printl-str返回彙編語言命令的程序。我需要在我的代碼使用變量,我有這個問題,即該函數將返回多餘的空格,我不希望它:clojure - 在組合字符串和變量時避免多餘的空格

(defn pushConstant [constant] 
    (println-str "@" constant "\r\nD=A\r\[email protected]\r\nA=M\r\nM=D\r\[email protected]\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 

這是我的彙編代碼問題。我在這樣的例子中遇到過這個問題。我很樂意聽到關於如何避免String和變量之間的額外空白的建議。

+1

我會生成並通過各地的列表或彙編指令序列,而不是用繩子處理直到最後的時間。更容易處理更高級別的數據結構,而不是需要解析具有語義含義的字符串緩衝區。 –

回答

2

坦率地說,我想實現一個看起來更像如下:

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

這樣,你沒有一個大丑格式字符串,但您的操作分解成小的,可讀的作品。

也就是說,這裏對你有所幫助的那條是(str "@" constant),將你的@與沒有添加空格的參數結合在一起。

2

創建使用str僅會連接字符串(交錯的println空格):

(defn pushConstant [constant] 
    (println-str (str "@" constant "\r\nD=A\r\[email protected]\r\nA=M\r\nM=D\r\[email protected]\r\nM=M+1"))) 
相關問題