理解困难:Clojure中的状态

理解困难:Clojure中的状态,clojure,clojure-java-interop,gen-class,Clojure,Clojure Java Interop,Gen Class,我理解:state/does/。它在类中创建一个字段,如Java中的字段。我不明白的是这有什么意义?似乎我只看到Clojure生成的类扩展了其他类。举个例子。我不懂Java,也不太精通面向对象编程。有人能向我解释一下:state的意义吗?它在哪里适合Java互操作 非常感谢 注意:当我说:state时,我指的是(:gen class:state)我在#Clojure IRC频道上与hiredman讨论过,他告诉我它的要点是每个实例的状态。这是有道理的。:状态只是在作为gen类一部分生成的函数之间

我理解:state/does/。它在类中创建一个字段,如Java中的字段。我不明白的是这有什么意义?似乎我只看到Clojure生成的类扩展了其他类。举个例子。我不懂Java,也不太精通面向对象编程。有人能向我解释一下:state的意义吗?它在哪里适合Java互操作

非常感谢


注意:当我说:state时,我指的是(:gen class:state)

我在#Clojure IRC频道上与hiredman讨论过,他告诉我它的要点是每个实例的状态。这是有道理的。

:状态只是在作为gen类一部分生成的函数之间共享一些数据的一种方式。将其视为与对象的实例数据完全相同。

有关
状态的更多信息以及如何初始化它,请参阅本文

从文章中:

  • :state
    定义将返回对象状态的方法
  • :init
    定义初始化器的名称。这是一个必须返回向量的函数。第一个元素也是超类构造函数的参数向量。在我们的例子中,这只是一个空向量。第二个元素是对象的状态
总之,
init
返回对象的状态,并在实例化对象时调用
state
是类上的一个方法,与函数相反,它将返回与
init
返回的向量中的第二个元素相同的值

然后,本文将继续展示如何使用原子来更改对象的状态(如果需要)