持つ:
(def x (promise))
x の型がプロミスであることを確認するにはどうすればよいですか?
ありがとう
一般的にはできないと言えます。promise はreify
いくつかのインターフェースとして作成されるため: IDeref
、IBlockingDeref
、。ただし、 value がそれらのいずれかを実装しているかどうかを確認できます: .IPending
IFn
clojure.lang.IPending
(defn promise? [v]
(instance? clojure.lang.IPending p))
または多分すべて:
(defn promise? [v]
(every? #(instance? % v)
[clojure.lang.IPending
clojure.lang.IFn
clojure.lang.IBlockingDeref
clojure.lang.IDeref]))
私は一緒に行きます
(defn promise? [p]
(isa? (class p) clojure.lang.IPending))