我在寻找的迂腐的方式来测试是否东西是原子或没有,如(atom? ...)
Clojure中的谓语,类似家庭(number? ...)
,(string? ...)
,(vector? ...)
,等。
鉴于Atom是Clojure的主要语言功能(atom ...)
,它是通过创建的,我不得不编写自己的自定义函数来测试内部实现类,这是错误的。例如,
(defn atom? [a] (= (type a) clojure.lang.Atom))
我缺少更正确的范例或内置语言功能吗?
注意:这个问题是无关的,并且与Scheme的“原子”相同(atom? ...)
,后者是非null的cos对。
我会用(instance? clojure.lang.Atom a)
而不用写谓语。
我还要提醒您,如果您觉得需要在运行时编写取决于对象类型的代码,则可能需要退后一步,想出另一种方法来解决问题:也许是协议或多方法让您以一种更惯用的方式调度对象类型?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句