2

次のような可変数の文字列引数を取るコンストラクターを持つ Java クラスがあります。

public Foo(String...args);

これを処理するために、Clojure で make-foo マルチメソッドを作成しようとしています。

(defmethod make-foo clojure.lang.ArraySeq [& args] (new Foo (into-array args)))

しかし、私がそれを呼び出すと

(make-foo ["one" "two"])

IllegalArgumentException 一致する ctor が見つかりません

私もそれを呼び出すことができるようにしたいです

(make-foo '("one" "two"))

int、float などの to-array バリアントはありますが、String はありません。では、このケースをどのように処理すればよいでしょうか。

4

1 に答える 1

2

make-fooのように呼び出すか、定義からを(make-foo "one" "two")削除してシーケンスを渡すと、記述どおりに機能します。&

于 2013-02-19T03:17:19.147 に答える