簡體   English   中英

clojure 讀取字符串分數/比率令人驚訝地工作

[英]clojure read-string fraction / ratio surprisingly working

有人問我如何解析 Clojure 中的字符串“1/4”。 我回復了以下內容(可能有更好的方法):

(-> "1/25"
  (str/split #"/")
  (->> (map #(Integer/parseInt %))
       (apply /)))

但后來我想我會看看 read-string 做了什么(我在安全的時候用它來解析),令人驚訝的是:

(read-string "1/25")

返回clojure.lang.Ratio

我根本沒想到它能夠閱讀表達式。 誰能解釋為什么這有效?

clojure.core/readclojure.edn/read都是 EDN 規范的“超集”。 它們支持所有有效的 EDN 和其他一些擴展(例如,比率)

clojure.core/read可以評估代碼。 例如(read-string "#=(prn:hello-injection)") ,所以更喜歡clojure.edn/read-string來解析輸入

AFIK, cljs.core/read-string不會讀取比率。 你也不能在.cljs文件中使用1/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM