[英]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/read
和clojure.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.