2009-07-11 60 views
4

我明白什麼:state/does /。它會在你的課堂中創建一個像Java一樣的領域。我不明白的是這個是什麼意思?看起來我只看到它用Clojure生成的類來擴展其他類。 http://www.fatvat.co.uk/2009/05/clojure-and-robocode.html就是一個例子。我不瞭解Java,而且我也不太熟悉面向對象編程。有人能解釋一下以下幾點:對我而言,以及它適合Java互操作性的地方?麻煩理解:在Clojure中的狀態

非常感謝!

注意:當我說:國家,我指的是(:創一流:狀態)

回答

2

我在#Clojure IRC頻道hiredman談了一下,然後他跟我說的要點它是每個實例的狀態。這就說得通了。

3

:狀態只是在作爲gen-class的一部分生成的函數之間共享某些數據的一種方式。把它看作與對象的實例數據完全相同。在state以及如何

3

的介紹:初始化可以發現文章gen-class – how it works and how to use it

從文章:

  • :state定義了將返回對象的狀態的方法。
  • :init定義了初始化程序的名稱。這是一個必須返回一個向量的函數。第一個元素又是超類構造函數的參數向量。在我們的情況下,這只是空的矢量。第二個元素是對象的狀態。

總之,init返回對象的狀態,並在實例化對象時調用。 state是類中的一個方法,與函數相反,它將返回與由init返回的向量中的第二個元素相同的返回值。

本文繼續展示如何使用原子來改變對象的狀態(如果需要的話)。