2

私はclo ju reが初めてです。を分割してString印刷したい。私が行った場合 :

(.split "Dasher Dancer Prancer" " ")

それは、配列の#<String[] [Ljava.lang.String;@64e0e8ca>ちょうどであるを与えます。toString()

次に、もしそうなら:

(.length (.split "Dasher Dancer Prancer" " "))

それは与えますjava.lang.IllegalArgumentException: No matching field found: length for class [Ljava.lang.String;

4

2 に答える 2

5

clojure.string/split代わりに使用してください:

user=> (clojure.string/split "Dasher Dancer Prancer" #" ")
["Dasher" "Dancer" "Prancer"]

これには Java 相互運用機能を使用する必要はありません。

長さが必要な場合は、countを使用します。

user=> (count (clojure.string/split "Dasher Dancer Prancer" #" "))
3

あなた.splitが呼び出そうとしているのStringは、配列を返す単純なJavaメソッド呼び出しであり、replStringによってそれを呼び出すことによって変換されますtoString。お気づきのように、それはあなたに望ましい結果を与えていません。

clojure.string/split一方、内容を期待どおりに出力するメソッドclojure.lang.PersistentVectorを持つものを返します。.toString

于 2013-08-31T21:33:58.553 に答える
4

(alength) 関数を使用できます。

(alength (.split "Dasher Dancer Prancer" " "))

user=> (doc alength)
clojure.core/alength ([array])
Java 配列の長さを返します。すべてのタイプの配列で動作します。

(doc) と (find-doc) は、毎日の Clojure 開発にとって非常に重要です。

于 2013-08-31T23:24:32.070 に答える