我一直在研究Clojure 问题 135 Infix Calculator,基本上是前缀算术计算器的简化中缀:
(= 7 (__ 2 + 5))
我按照规定解决了问题。但这让我想知道——如果参数是作为字符串提供的——我将如何让它工作?
(= 7 (__ "2 + 5"))
显然我会从split开始,然后仔细研究结果:
(clojure.string/split "2 + 5" #"\s")
user=> ["2" "+" "5"]
但是如何将“+”转换为函数调用?这是行不通的:
("+" 2 5)
user=> java.lang.ClassCastException: java.lang.String cannot be
cast to clojure.lang.IFn <snip>
寻求启蒙......