我明白了什么:state / does /。它会在您的类中创建一个字段,就像在Java中一样。我不明白的是这是什么意思?看起来我只看到Clojure生成的类扩展了其他类。 http://www.fatvat.co.uk/2009/05/clojure-and-robocode.html就是一个例子。我不懂Java,而且我不太熟悉面向对象编程。有人可以解释一下这个问题:向我说明,以及它与Java互操作的关系在哪里?
非常感谢!
注意:当我说:州,我指的是(:gen-class:state)
答案 0 :(得分:4)
:state只是在作为gen-class的一部分生成的函数之间共享一些数据的一种方式。可以认为它与对象的实例数据完全相同。
答案 1 :(得分:3)
有关state
的更多信息以及如何对其进行初始化,请参阅文章gen-class – how it works and how to use it
来自文章:
:state
定义了一个返回对象状态的方法。:init
定义初始化程序的名称。这是一个必须返回向量的函数。第一个元素又是超类构造函数的参数向量。在我们的例子中,这只是空矢量。第二个元素是对象的状态。总之,init
返回对象的状态,并在实例化对象时调用。 state
是类的一个方法,与函数相反,它将返回与init
返回的向量中的第二个元素返回的相同值。
然后,文章继续展示如何使用原子来改变对象的状态(如果需要)。
答案 2 :(得分:2)
我在#Clojure IRC频道上与hiredman讨论过,他告诉我,它的主要观点是每个实例的状态。这是有道理的。