Clojure でプロパティとメソッドを使用してオブジェクトを作成したいのですが、gen-class と proxy で必要な作業を実行できることを読みましたが、その実装は非常にわかりにくいものです。
AOT コンパイル手順を回避するためにプロキシを使用したいのですが、それについて読みました。
これがClojureでやりたいことです
Java コード:
public class MyClass {
public float myFloat;
MyClass( float _myFloat ) {
myFloat = _myFloat
}
public void showNumber() {
println( myFloat );
}
}
プロキシを使用してそのコードを Clojure に変換するのに苦労しています。
アップデート:
私の目的には deftype の方が適しているようですが、まだその実装に苦労しています
ここに私のClojureコードがあります:
(deftype Particle [x y]
Object
(render [this]
(no-stroke)
(fill 200 30 180)
(ellipse x y 200 200)))
どのプロトコルを使用すればよいかわからないプロトコルを指定する必要があるため、Java クラスのようなオブジェクトを作成しようとしてオブジェクトを使用していますが、次のエラー メッセージが表示されます。
インターフェイスにないメソッドを定義できません: render
それが役立つ場合、私はClojureの処理ポートであるクイルを使用しています
更新 2:
OK、機能する defprotocol と deftype の組み合わせを取得することができましたが、方法を理解する必要があることがもう 1 つあります。それは、メンバー変数またはプロパティをクラスに追加することです。これが私の clojure コードです。
(defprotocol ParticleProtocol
(update [this])
(render [this]))
(deftype Particle [position]
ParticleProtocol
(update [this])
(render [this]
(no-stroke)
(fill 200 30 180)
(ellipse (.x position) (.y position) 20 20)))
このオブジェクトに、半径などのいくつかの変数を追加したいと思いますが、何かアイデアはありますか?