我在寻找的迂腐的方式来测试是否东西是原子或没有,如(atom? ...)
Clojure中的谓语,类似家庭(number? ...)
,(string? ...)
,(vector? ...)
,等。
鉴于 Atoms 是 Clojure 的主要语言特性,使用 . 创建(atom ...)
,我必须编写自己的自定义函数来测试内部实现类,这感觉是错误的。例如,
(defn atom? [a] (= (type a) clojure.lang.Atom))
Run Code Online (Sandbox Code Playgroud)
我缺少更正确的范例或内置语言功能吗?
注意:这个问题与 Scheme 的“原子”无关,也不相同(atom? ...)
,它们是非空 cos 对。
Sea*_*eld 12
我会使用(instance? clojure.lang.Atom a)
甚至不费心编写谓词。
我还要提醒的是,如果您觉得需要编写以运行时对象类型为条件的代码,您可能需要退后一步,想出一种不同的方法来解决问题:也许是协议或多方法会让你以更惯用的方式调度对象类型吗?