Clojure 是否可以为deftype定义构造函数?

Clojure 是否可以为deftype定义构造函数?,clojure,Clojure,deftype构造函数的一个小例子 (deftype Atom [v] ...) 我希望v被包裹在一个原子中,这样 @(.v (Atom. 1)) => 1 这可能吗?不可能。如果你真的想走构造函数的OO之路,那么你需要使用 在函数世界中,使用函数非常简单 (defn createAtom [v] (Atom. (atom v))) @(.v (createAtom 1)) => 1 以前也有人问过同样的问题,请看以下内容:您的意思是想为您的键入提供自己的实现,而不是使

deftype构造函数的一个小例子

(deftype Atom [v]
    ...)
我希望v被包裹在一个原子中,这样

@(.v (Atom. 1)) => 1

这可能吗?不可能。如果你真的想走构造函数的OO之路,那么你需要使用

在函数世界中,使用函数非常简单

(defn createAtom [v] (Atom. (atom v)))
@(.v (createAtom 1)) => 1

以前也有人问过同样的问题,请看以下内容:

您的意思是想为您的键入提供自己的实现,而不是使用自动生成的实现吗?我想做的是可变状态…:)如何在gen类上使用协议?若要定义自定义构造函数,必须使用gen类或用Java编写解决方案。关于如何使用gen类,请阅读本文。