Clojure引用数字



我无法弄清楚为什么'50%和'50x在clojure中抛出异常。我想制作一个接受 50% 进入参数的宏,但我不断收到异常。可能吗,怎么可能?

[编辑]好吧,所以,你会笑的,但我这样做更多的是为了一个笑话DSL,但现在我真的很好奇。

(defmacro chance [x]
   (let [y (Integer/parseInt (clojure.string/replace (str x) "%" ""))]
     `(> ~y (rand-int 100))))

你不能只引用任何字符序列,你只能引用有效的 Clojure 形式;引用的表达式必须是(read)的,并且必须是单个表达式。

50x50%不是有效的符号或数字,无论是否引用,因为数字不能以x或%结尾,符号不能以数字开头。它们也不是有效的字符串文本,因为字符串必须用双引号括起来。另请参阅 http://clojure.org/reader

最新更新