2017-04-05 72 views
0
(= "\"" "\"") ;; true 

(let [ss "123\""] 
    (doseq [s ss] 
    (println s (= "\"" s) (.equals "\"" s)))) 

;; 1 false false 
;; 2 false false 
;; 3 false false 
;; " false false 

爲什麼false第二種情況?如何比較Clojure中的雙引號?

回答

5

說明doseq給你的元素類型:

(let [ss "123\""] 
    (doseq [s ss] 
    (println (type s)))) 

你會看到,他們的人物,但你要比較它們對一個字符串。由於類型不匹配,這將始終是錯誤的。

比較反對一個字符,而不是:

(let [ss "123\""] 
    (doseq [s ss] 
    (println s (= \" s)))) 

1 false 
2 false 
3 false 
" true