【问题标题】:Trouble understanding :state in Clojure难以理解:Clojure 中的状态
【发布时间】:2009-07-11 00:26:15
【问题描述】:

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

非常感谢!

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

【问题讨论】:

    标签: clojure clojure-java-interop gen-class


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      来自文章:

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

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

      文章接着展示了如何使用原子来改变对象的状态,如果需要的话。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-12
          • 1970-01-01
          • 2017-06-22
          • 1970-01-01
          • 2010-10-28
          相关资源
          最近更新 更多