我无法弄清楚为什么'50%和'50x会在clojure中抛出异常。我想制作一个接受50%参数的宏,但我不断得到例外。它有可能吗?如何?
[编辑] 好吧,所以,你会笑,但我更喜欢笑话DSL,但现在我真的很好奇。
(defmacro chance [x]
(let [y (Integer/parseInt (clojure.string/replace (str x) "%" ""))]
`(> ~y (rand-int 100))))
答案 0 :(得分:3)
你不能只引用任何字符序列,你只能引用有效的Clojure 表格;引用的表达式必须是(read)
能够且它必须是单个表达式。
50x
和50%
不是引用或不引用的有效符号或数字,因为数字不能以x或%结尾,而且符号不能以数字开头。它们也不是有效的字符串文字,因为字符串必须用双引号引用。另请参阅http://clojure.org/reader