常見問題
檔案相關
Clojure Application 讀取一般檔案
使用
clojure.java.io/resource
,可以從 classpath 來讀取檔案。檔案放在/resources
資料夾下即可。讀取 linux 的
/proc
系統檔需要使用一些特別的技巧,因為 /proc 下的檔案和一般的檔案不同,要先做一些轉換。
(slurp (java.io.FileReader. "/proc/cpuinfo"))
Here Document
clojure 沒有 here document 的語法。如果要使用的字串裡頭包含了太多需要逸脫 (escape) 的字元,官方建議的作法是把字串放在
/resources
資料夾下的檔案裡,用讀檔的方式取得。
字串/數值轉換相關
將字串轉換成整數值
clojure.edn/read-string
或是Integer/parseInt
字元轉換成數值
對於屬於
#"[0-9]"
的字元,可以使用Character/digit
clojure 數值型態 suffix 的意義
(type 1N) => clojure.lang.BigInt (type 1) => java.lang.Long (type 1.0) => java.lang.Double (type 1M) => java.math.BigDecimal
REPL 啟動時發生 timeout
解決方案: 在 project.clj
裡修改 repl 的 timeout
:repl-options {
;; If nREPL takes too long to load it may timeout,
;; increase this to wait longer before timing out.
;; Defaults to 30000 (30 seconds)
:timeout 120000
}
尋找 collections 符合某個條件的 item ,找到後傳回第一個(find-first)
stackoverflow 列舉了數種寫法
filter/ first
-> 最容易理解(some #{:fred} coll)
-> some idiom: 使用 set 作為比對條件reduce/ reduced
-> 效能最好