小编Joh*_*son的帖子

在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
Run Code Online (Sandbox Code Playgroud)

据我所知,符号被转换为名称为Symbol的某个函数,它接受两个参数并返回第二个参数.我猜它与符号类的实现有关?

clojure

4
推荐指数
1
解决办法
117
查看次数

标签 统计

clojure ×1