10

ユーザーがClojureで書かれていることを知らなくても、Javaから使用できるClojureライブラリを作成しようとしています。このためには、フィールドに適切な型が必要です。

私はこれができるのが好きです:

(deftype Point [^double x ^double y])

x/y の適切な型を持つクラスを生成します。ただし、これはクラスではなく、プリミティブに対してのみ機能するようです。

(deftype Foo [^String bar])

以下を生成します。

public final Object bar;

私が期待する場所:

public final String bar;

フィールドの種類を制限する方法はありますか? deftype/以外に別のオプションはありますdefrecordか?

4

2 に答える 2

12

およびのhttp://clojure.org/datatypesから:deftypedefrecord

フィールドは型ヒントを持つことができ、プリミティブにすることができます

現在、非プリミティブ型の型ヒントは 、フィールド型やコンストラクター引数を制約するために使用されませんが、クラス メソッドでの使用を最適化するために使用されることに注意してください。

フィールド型とコンストラクタ引数の制約が計画されています

(私の強調)

于 2012-08-25T15:40:06.347 に答える
0

たぶん、このようにしてみてください:(deftype Point [#^Integer x #^Integer y])

于 2012-08-25T14:42:41.493 に答える