4
使用Clojure周围玩,我注意到,('+ 2 2)没有把这样的错误我会一直期待 - 它返回2.我已经花了几分钟打转转:在clojure中,符号投射到什么功能?为什么('+ 2 2)= 2?
(def f (cast clojure.lang.IFn 'a-symbol))
(f 5) ;; => nil
(f 5 5) ;; => 5
(f 5 5 5) ;; ArityException Wrong number of args (3) passed to: Symbol
(f "hey") ;; => nil
(f "foo" "bar") ;; => "bar"
(f "foo" "bar" "baz") ;; => ArityException Wrong number of args (3) passed to: Symbol
据我所知,符号被转换为名称为Symbol的函数,该函数接受两个参数并返回第二个参数。我猜它与符号类的实现有关?
这是一个字典查找操作。例如'(:字典)'<=>'(得到字典:a)'。 – SaltyEgg