4

我明白什么:state/does/。它在您的类中创建一个字段,就像在 Java 中一样。我不明白这是什么意思?似乎我只看到它使用 Clojure 生成的扩展其他类的类来完成。http://www.fatvat.co.uk/2009/05/clojure-and-robocode.html就是一个例子。我不懂Java,也不太精通面向对象编程。有人可以向我解释 :state 的意义吗,以及它在哪里适合 Java 互操作?

非常感谢!

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

4

3 回答 3

4

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

于 2009-07-17T08:04:34.227 回答
3

state有关 gen-class以及如何初始化它的更多信息,请参阅文章gen-class – how it works and how to use it

来自文章:

  • :state定义了一个返回对象状态的方法。
  • :init定义初始化程序的名称。这是一个必须返回向量的函数。第一个元素也是超类构造函数的参数向量。在我们的例子中,这只是一个空向量。第二个元素是对象的状态。

总之,init返回对象的状态,在对象实例化时调用。 state是类上的一个方法,而不是一个函数,它将返回与返回的向量中的第二个元素相同的值init

然后文章继续展示如何使用原子来改变对象的状态,如果需要的话。

于 2012-09-11T16:28:08.043 回答
2

我在#Clojure IRC 频道上与hiredman 进行了讨论,他告诉我它的重点是每个实例的状态。这就说得通了。

于 2009-07-11T01:38:44.830 回答