2016-07-13 8 views
0

ような2D-プリミティブ配列を定義します。Clojureの:私は[] []二重に変えたい</p> <pre><code>(def data [[1 1] [1 1]]) </code></pre><p>などの2Dベクトルを有するダブル[] []

iはclojure.coreを調べ、私が試した:

1)

(->> (map double-array data) 
    (to-array-2d)) 

Unfortnatelyそれは、Java相互運用に失敗したデータのオブジェクト[] []型を返します。もちろん

2)

(->> (map double-array data) 
    (double-array)) 

ダブル配列は数字

3のコレクションを想定しているため、それは動作しません)、それは重いですので、私はそれをコーディングしていないと何かあれば、私は知りませんesle存在するが、私はdouble [] []を(make-array Double/Type 2 2)[2 2 alenによって得られた]で初期化し、それをループで埋めることができる。 実際にJavaに似ています。

4)短い道が、ツイストビット

(def double-2d-array-type 
    (type (double-array []))) 

    (->> (map double-array data) 
     (into-array double-2d-array-type))) 

直接的な方法はありますか?それを直接呼び出すことができれば、それは良いでしょう。

同様に、「(にアレイダブル[]データ)」

+0

は、 ''配列された配列(Class/forName "[D")(map double array [[1.0 1.2] [1.3 1.5]]) '=>' #object ["[D" 0x16eccb2e " [D @ 16ecbb2e "]'これに対処するには? – noisesmith

+3

も:http://stackoverflow.com/questions/3868192/how-do-i-create-a-primitive-two-dimensional-2d-array-of-doubles-in-clojure – birdspider

答えて

1

だけ取り除く最初の引数into-arrayに:限り、入力シーケンス内の少なくとも1つの要素は、into-arrayあるよう

(into-array (map double-array data)) 

その型を見て、出力配列の目的の型を推測することができます。この推測は、継承のためにいつもあなたが望むものではありませんが、プリミティブのために間違っていることはありません。

関連する問題