2017-08-29 75 views
1

我有一個函數encode需要一個種子和消息來返回一個密碼。爲什麼clojure函數在core.cljs [reagent]中不工作或崩潰?

我的問題是,當我試圖在我的core.cljs文件中用試劑使用它時,函數默默地失敗(返回一個空字符串)。

我覺得我正在做一些事情(或方法)錯誤,所以任何快速指針將高度讚賞。

(prn (encode "testing" "test"))   ;;> "" 
(prn (type encode))      ;;> #object[Function] 
(prn (type (encode "testing" "jordan"))) ;;> #object[String] 

例如,我期待:「mikmbry」從(encode "testing" "test")。一切工作在repl上,但在core.cljs上默默無聞。

謝謝你的時間。

+1

能否請您分享您實現'encode'的功能? –

+0

當然這是:[gist](https://gist.github.com/mohamedhayibor/45423dfe60c51a8f22a80ab056726541)。 –

回答

4

您的代碼在處理ClojureScript中的字符串時遇到了問題。

JavaScript沒有字符類型,ClojureScript沒有引入它自己的類型。相反,當你把一個字符串作爲一個序列,它的單個元素將是一個個字符的字符串:

(seq "ABC") 
;; => ("A" "B" "C") 

如果你需要得到一個字符的ASCII數值,你需要使用JavaScript的String.charCodeAt(index)

(.charCodeAt "A" 0) 
;; => 65 

要在數字(ASCII碼)轉換爲字符串,您可以使用String.fromCharCode

(js/String.fromCharCode 65) 
;; => "A"