Clojure の :state を理解できない
-
12-09-2019 - |
質問
:state /does/ が何であるかを理解しています。Java の場合と同様に、クラス内にフィールドを作成します。私が理解できないのは、これにはどういう意味があるのでしょうか?他のクラスを拡張する Clojure で生成されたクラスでのみ実行されているようです。 http://www.fatvat.co.uk/2009/05/clojure-and-robocode.html 一例です。私は Java のことは知りませんし、オブジェクト指向プログラミングにもあまり詳しくありません。誰かが :state の要点と、それが Java 相互運用性のどこに当てはまるのかを説明してもらえますか?
どうもありがとう!
注記::state と言うときは、(:gen-class :state) を指します。
解決 3
私は#Clojure IRCチャンネルでhiredmanでそれを上に話した、と彼はそれの主なポイントは、インスタンスごとに状態であることを私に言いました。それは理にかなっています。
他のヒント
:状態は、単に、GEN-クラスの一部として生成された関数との間の一部のデータを共有する方法です。オブジェクトのインスタンスのデータと全く同じであると考える。
詳細については、 state
初期化方法については記事をご覧ください。 gen-class – 仕組みと使用方法
記事より:
:state
オブジェクトの状態を返すメソッドを定義します。:init
イニシャライザの名前を定義します。これはベクトルを返さなければならない関数です。最初の要素も、スーパー クラス コンストラクターへの引数のベクトルです。私たちの場合、これは単なる空のベクトルです。2 番目の要素はオブジェクトの状態です。
要約すれば、 init
オブジェクトの状態を返し、オブジェクトがインスタンス化されるときに呼び出されます。 state
関数とは対照的に、クラスのメソッドであり、によって返されるベクトルの 2 番目の要素として返される値と同じ値を返します。 init
.
この記事では、必要に応じてアトムを使用してオブジェクトの状態を変更する方法を続けて説明します。