2009-07-11 8 views
4

私は何を理解しています:state/does /。 Javaのように、クラス内にフィールドを作成します。私が理解していないことは、これのポイントは何ですか?私はそれが他のクラスを拡張するClojure生成のクラスでのみ行われているように見えます。 http://www.fatvat.co.uk/2009/05/clojure-and-robocode.htmlがその一例である。私はJavaを知らず、オブジェクト指向プログラミングに精通していません。誰かがポイントを説明することができます:私に状態、そしてそれはJava interopでどこに合っていますか?問題の理解:Clojureでの状態

ありがとうございます!私が言うとき:

NOTEは状態、私はを参照しています私は#Clojure IRCチャネル上hiredmanでそれを上に話した

答えて

2

(::GEN-クラスの状態)、彼は私に言ったことの主なポイントインスタンスごとの状態です。それは理にかなっている。

3

:状態は、単にgen-classの一部として生成された関数間でいくつかのデータを共有する方法です。それをオブジェクトのインスタンスデータとまったく同じものと考えてください。

3
stateとどのように初期化するために、それが記事から記事 gen-class – how it works and how to use it

を見つけることができる上

もっとINFOMATION:

  • :stateは、オブジェクトの状態を返しますメソッドを定義します。
  • :initは、イニシャライザの名前を定義します。これはベクトルを返さなければならない関数です。最初の要素は、やはりスーパークラスのコンストラクタへの引数のベクトルです。私たちの場合、これはちょうど空のベクトルです。 2番目の要素はオブジェクトの状態です。

要約すると、initはオブジェクトの状態を返し、オブジェクトのインスタンス化時に呼び出されます。 stateは、関数ではなくクラスのメソッドで、initによって返されたベクトルの2番目の要素と同じ値が返されます。

次に、必要に応じてオブジェクトの状態を変更できるようにアトムを使用する方法を説明します。